1、Java 多态
继承使我们可以从另一个类继承属性和方法。多态使用这些方法来执行不同的任务。这使我们能够以不同的方式执行单个方法。
1)引用的多态
父类的引用可以指向本类的对象,父类的引用可以指向子类的对象。
注意:子类的对象不可以指向父类的对象
2)方法的多态
创建本类对象时,调用的方法为本类的方法。创建子类对象时,调用的方法为子类重写的方法或者继承的方法。
注意:父类的引用调用的方法不能是子类独有的方法,必须是从父类继承的方法或重写父类的方法。
2、多态中的引用类型转换
1)向上类型转换(隐式/自动类型转换),是小类型到大类型的转换。不存在风险。
2)向下类型转换(强制类型转换),是大类型向小类型转换。有风险。
3)instanceof运算符,来解决引用对象的类型,避免类型转换的安全问题。(animal instanceof Cat)
3、多态实例代码
多态的体现是父类的引用指向了自己的子类对象,父类的引用也可以接收自己的对象。实现多态的前提是必须是类与类之间只有关系,要么继承或实现。通常还有一个前提,存在覆盖。多态的好处是多态的出现大大的提高了程序的扩展性。
例如:
public class Main { public static void main(String[] args) { Animal myAnimal = new Animal(); // 创建 Animal 对象 Animal myCat = new Cat(); // 创建 Cat 对象 Animal myDog = new Dog(); // 创建 Dog 对象 myAnimal.eat(); myCat.eat(); myDog.eat(); } }
class Animal { public void eat() { System.out.println("吃饭"); } } class Cat extends Animal { public void eat() { System.out.println("吃鱼"); } public void catchMouse() { System.out.println("抓老鼠"); } } class Dog extends Animal { public void eat() { System.out.println("吃骨头"); } public void kanJia() { System.out.println("看家"); } }
“继承”和“多态性”对于代码可重用性很有用:创建新类时,重用现有类的属性和方法。