Java中的多态

来源:互联网 发布:steam 知乎 编辑:程序博客网 时间:2024/05/01 10:14

多态:某一种事物的多种存在形态;

       1、体现:父类引用指向子类的对象,即父类F ,子类Z,F fu= new Z();

       2、好处:大大提高程序扩展性;

       3、前提:必须是继承或实现关系;且存在覆盖;

       4、弊端:只能访问父类的成员;

 

 

       转型:父类引用指向子类对象时,又想要使用子类中的方法,那

              么就需要将该父类引用强转成指向的子类的类型:

 

       关键字:instanceof-->判断引用指向的对象是否是某个类的对象:

       ainstanceof Person;

 

       父类F ,子类Z,Ff = new Z();

       成员方法特点:编译看左边,运行看右边;如果右边(子类)不存在所调用的方法

 

              静态成员变量:无论编译还是运行,都参考左边;

              成员变量特点:多态中,无论编译运行都看左边,调用时也是调用到父

              类中的变量;就是说父类和子类中有相同名称变量,那么运行时调

              用的是父类的变量;

 

 

       //定义一个类

       classFu{

       publicstatic void main(String[] args) {

              Fuf = new Zi();

              f.run();//编译时,检查父类中是否有run方法,运行时调用的是子类的run();

              //f.method();//因为父类中没有method方法,那么写上则编译不能通过

 

              if(finstanceof Zi){//判断f是否指向Zi类的对象

                     Ziz = (Zi)f;//将父类引用向下转型为子类引用;

                     z.method();//引用转成子类类型之后,就可以调用子类的方法了

              }

       }

       public void run(){

              System.out.println("Fu_run");

       }

       }

       //定义一个Zi类继承Fu类,重写了Fu类的run方法,并且有一个自己独有的方法method;

       classZi extends Fu{

              publicvoid method(){//子类中独有的方法

                     System.out.println("Zi_method");

              }

              public void run(){//覆盖了父类中的run方法

                     System.out.println("Zi_run");

              }

       }

 

0 0
原创粉丝点击