Лучшее руководство по Java переписывание (Override) и перегрузки (перегрузки) в 2024 году. В этом руководстве вы можете изучить Rewrite (Override),Метод правил перезаписи,Использование Супер ключевое слово,Перегрузка (от перегрузки),Переписывая разницу между перегрузки,
Переписывание подкласс процесса реализации, чтобы обеспечить доступ к методам родительского класса переписывать! Значения и параметры возврата не изменяются. То есть тот же случай, ядро переписать!
Переписывая преимущество подклассов по мере необходимости, определить конкретные в своих действиях.
То есть подкласс метода родительского класса может быть реализован по мере необходимости.
В объектно-ориентированных принципах, переписывание означает, что вы можете переопределить любые существующие методы. Примерами могут служить следующие:
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 类的方法 } }
Приведенные выше примеры скомпилированные получены следующие результаты:
动物可以移动 狗可以跑和走
В приведенном выше примере можно увидеть, даже если б принадлежит к видам животных, но это операция перемещения класса метод собаки.
Это происходит потому, что во время компиляции, но проверка параметра ссылочного типа.
Тем не менее, во время выполнения, тип виртуальной машины Java (JVM) указанного объекта и способа эксплуатации объекта.
Таким образом, в приведенном выше примере, компилятор смог добиться успеха, потому что метод движение существует класс животных, но работает, работает это метод для конкретного объекта.
Рассмотрим следующие примеры:
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(); } }
Приведенные выше примеры скомпилированные получены следующие результаты:
TestDog.java:30: cannot find symbol symbol : method bark() location: class Animal b.bark(); ^
Программа выдаст ошибку компиляции, потому что нет б эталонный метод коры типа животных.
Когда вам нужно переписать, чтобы вызвать метод родительского класса в подклассе, чтобы использовать супер ключевое слово.
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类的方法 } }
Приведенные выше примеры скомпилированные получены следующие результаты:
动物可以移动 狗可以跑和走
Перегрузки (перегрузки) находится в классе внутри метода с тем же именем, но с разными параметрами. Тип возврата могут быть одинаковыми или различными.
Каждый перегруженный метод (или конструктор) должен иметь уникальный список типов аргументов.
Только перегруженные конструкторы
Чрезмерная правила
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)); } }
Точка разницы | Перегруженные методы | Переопределение методов |
---|---|---|
Список параметров | Вы должны быть изменены | Не должен быть изменен |
Возвращаемый тип | Вы можете изменить | Не должен быть изменен |
ненормальный | Вы можете изменить | Может быть уменьшено или удалены, вы не должны бросать новые или более широкое исключение |
доступа | Вы можете изменить | Не должны быть более жесткие ограничения (ограничение может быть уменьшена) |