08天-01-面向对象(多态-概念)
l 多态:可以理解为事物存在的多种体现形态。
举例:
人:男人,女人;
动物:猫,狗;
猫 x = new 猫();
动物 x = new 动物();
1) 多态的体现
父类的引用指向了自己的子类对象;
父类的引用也可以接受自己的子类对象。举例:List list = newArrayList();
2)多态的前提
必须类与类之间有关系,要么继承,要么实现。
3) 多态的好处
多态的出现大大提高了程序的拓展性。
4) 多态的弊端
虽然提高了程序的拓展性,但是只能使用父类的引用访问父类中的成员。
举例:只能,List list = new ArrayList();不能,Arraylist list = new List();
5) 在多态中成员函数的额特点:
在编译时期,参阅引用类型变量所属的类中是否有调用的方法,如果有,编译通过,否则编译失败。
在运行时期,参阅对象所说的类是否有调用的方法。
简单的总结就是:成员函数在多态调用时,编译看左边,运行看右边。
在多态中,成员变量的特点:
无论编译和运行,都参考左边(引用型变量所属的类)。
在多多态中,成员变量的特点:
无论编译和运行,都参考左边。
代码演示:
class fu{
voidmethod1(){
System.out.println(“Fumethod_1”);
}
void method2(){
System.out.println(“Fumethod_2”);
}
}
class zi extends Fu{
voidmethod1(){
System.out.println(“Zimethod_1”);
}
void method3(){
System.out.println(“Zimethod_3”);
}
}
clas Demo1{
publicstatic void main(String[] args){
Ziz = new Zi();
z.method1();
z.method2();
z.method3();
}
}
打印结果:
Zi method_1
Fu method_2
Zi method_3
clas Demo2{
publicstatic void main(String[] args){
Fuz = new Fu();
z.method1();
z.method2();
z.method3();
}
}
//编译失败,对象找不到method3()。