Java笔记2 面向对象<4>多态、

时间:2021-01-23 19:39:23


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()。