----概念:
所谓多态,实际上就是一个对象的多种状态。
----体现:
父类或者接口的引用指向或者接收自己的子类对象。
----作用:
多态的存在提高了程序的拓展性和后期可维护性。
----前提:
1:需要存在继承或者实现关系。
2:要有覆盖操作。(即方法重写)
----转型:
在多态中:向下转型必须要先向上转型。
eg:
Fruit f = new Apple();//向上转型 Fruit水果
Orange o = (Orange)f;//向下转型必须先要向上转型 Orange橘子(所以此条语句为错误)
p.eat(f);
p.eat(o);//错误
----instanceof关键字:
作用:判断这个对象是否是这个特定类或者它子类的一个实例。(返回boolean值)
判断原则:判断左边的对象是否是它右边的实例。(也就是说左边的是被判断者,右边的是判断者)
eg:
System.out.println(dog instanceof Animal); //返回true。
注:
1:
成员方法:
在编译时:要查看这个父类中是否有这个被调用的子类。
在运行是:要查看这个子类中是否有这个被调用的方法。
成员变量:
要查看引用变量是否属于所调用的类。
2:
①:类的设计主要是父类的设计。
②:子类永远不要去继承一个已经完全实现好了的类,因为一旦发生向上转型,所调用的方法一定是被
子类覆盖过的方法,所以只会继承抽象类或者是接口。
所谓多态,实际上就是一个对象的多种状态。
----体现:
父类或者接口的引用指向或者接收自己的子类对象。
----作用:
多态的存在提高了程序的拓展性和后期可维护性。
----前提:
1:需要存在继承或者实现关系。
2:要有覆盖操作。(即方法重写)
----转型:
在多态中:向下转型必须要先向上转型。
eg:
Fruit f = new Apple();//向上转型 Fruit水果
Orange o = (Orange)f;//向下转型必须先要向上转型 Orange橘子(所以此条语句为错误)
p.eat(f);
p.eat(o);//错误
----instanceof关键字:
作用:判断这个对象是否是这个特定类或者它子类的一个实例。(返回boolean值)
判断原则:判断左边的对象是否是它右边的实例。(也就是说左边的是被判断者,右边的是判断者)
eg:
System.out.println(dog instanceof Animal); //返回true。
注:
1:
成员方法:
在编译时:要查看这个父类中是否有这个被调用的子类。
在运行是:要查看这个子类中是否有这个被调用的方法。
成员变量:
要查看引用变量是否属于所调用的类。
2:
①:类的设计主要是父类的设计。
②:子类永远不要去继承一个已经完全实现好了的类,因为一旦发生向上转型,所调用的方法一定是被
子类覆盖过的方法,所以只会继承抽象类或者是接口。