Najlepszy samouczek przepisanie Java (Zastąp) i przeciążeniu (Overload) W 2024 r. W tym samouczku możesz dowiedzieć się Przepisz (Zastąp),Sposób poprawiania przepisów,Użycie słowa kluczowego Super,Przeciążenie (Overload),Przepisanie różnicę między przeciążeniem,
Przepisywanie jest podklasą procesie wdrażania, aby umożliwić dostęp do metod klasy nadrzędnej do ponownego zapisu! Zwracane wartości i parametry nie są zmieniane. To jest ten sam przypadek, rdzeń przepisać!
Przepisanie przewagę podklasy jak trzeba, zdefiniuj w swoich działaniach.
To jest podklasą metody klasy rodzic może być realizowane w miarę potrzeb.
W zasadach obiektowych, Ponowny zapis oznacza, że można zastąpić wszystkie istniejące metody. Przykłady są następujące:
class Animal{ public void move(){ System.out.println("动物可以移动"); } } class Dog extends Animal{ public void move(){ System.out.println("狗可以跑和走"); } } public class TestDog{ public static void main(String args[]){ Animal a = new Animal(); // Animal 对象 Animal b = new Dog(); // Dog 对象 a.move();// 执行 Animal 类的方法 b.move();//执行 Dog 类的方法 } }
Powyższe przykłady zebrane wyniki przedstawiają się następująco:
动物可以移动 狗可以跑和走
W powyższym przykładzie można zauważyć, chociaż b należy do rodzaju zwierzęcia, lecz jest to operacja przenoszenia klasy Metoda psów.
To dlatego, że w czasie kompilacji, ale sprawdzanie parametr typu odniesienia.
Jednak w czasie wykonywania, typ Java Virtual Machine (JVM) dla określonego obiektu i sposobu funkcjonowania obiektu.
Tak więc w powyższym przykładzie, kompilator był w stanie odnieść sukces, ponieważ metoda klasy istnieje ruch zwierząt, ale działa, działa to metoda dla danego obiektu.
Rozważmy następujące przykłady:
class Animal{ public void move(){ System.out.println("动物可以移动"); } } class Dog extends Animal{ public void move(){ System.out.println("狗可以跑和走"); } public void bark(){ System.out.println("狗可以吠叫"); } } public class TestDog{ public static void main(String args[]){ Animal a = new Animal(); // Animal 对象 Animal b = new Dog(); // Dog 对象 a.move();// 执行 Animal 类的方法 b.move();//执行 Dog 类的方法 b.bark(); } }
Powyższe przykłady zebrane wyniki przedstawiają się następująco:
TestDog.java:30: cannot find symbol symbol : method bark() location: class Animal b.bark(); ^
Program wygeneruje błąd kompilacji, ponieważ nie ma odniesienia b Metoda bark typu zwierząt.
Kiedy trzeba być przepisany wywołać metodę klasy nadrzędnej w podklasie użyć słowa kluczowego super.
class Animal{ public void move(){ System.out.println("动物可以移动"); } } class Dog extends Animal{ public void move(){ super.move(); // 应用super类的方法 System.out.println("狗可以跑和走"); } } public class TestDog{ public static void main(String args[]){ Animal b = new Dog(); // Dog 对象 b.move(); //执行 Dog类的方法 } }
Powyższe przykłady zebrane wyniki przedstawiają się następująco:
动物可以移动 狗可以跑和走
Przeciążeniowe (przeciążenia) jest klasą wewnątrz metody o tej samej nazwie, lecz z zastosowaniem różnych parametrów. Typ zwracany mogą być takie same lub różne.
Każdy przeciążona metoda (lub konstruktora) musi mieć unikalną listę typów argumentów.
Tylko przeciążone konstruktory
Przeciążenie zasady
public class Overloading { public int test(){ System.out.println("test1"); return 1; } public void test(int a){ System.out.println("test2"); } //以下两个参数类型顺序不同 public String test(int a,String s){ System.out.println("test3"); return "returntest3"; } public String test(String s,int a){ System.out.println("test4"); return "returntest4"; } public static void main(String[] args){ Overloading o = new Overloading(); System.out.println(o.test()); o.test(1); System.out.println(o.test(1,"test3")); System.out.println(o.test("test4",1)); } }
Punkt różnicy | Przeciążone metody | metody nadrzędne |
---|---|---|
Lista parametrów | Musisz być modyfikowany | nie mogą być modyfikowane |
Powrót Rodzaj | Można modyfikować | nie mogą być modyfikowane |
nienormalny | Można modyfikować | Mogą być zmniejszone lub usunięte, nie należy rzucać nowe lub szerszy wyjątek |
dostęp | Można modyfikować | nie mogą być bardziej rygorystyczne ograniczenia (ograniczenie może być zmniejszona) |