Java 多态与父类的设计相关

来源:互联网 发布:万能五笔有mac版吗 编辑:程序博客网 时间:2024/04/30 02:11
1.java多态性的两种主要体现:

(1)方法的重载与覆写。

(2)对象的多态性。


2.对象的多态性的两种类型:

(1)向上转型:子类对象——>父类对象。

(2)向下转型:父类对象——>子类对象。

对于向上转型,程序会自动完成,而对于向下转型时,必须明确地指明要转型的子类类型

例子1:对象向上转型


程序运行结果:

B ——> public void fun1(){}

注:此时父类对象调用的是被子类覆写过的方法。注意!但是此时对象 a 是无法调用 B 类中的 fun3() 方法的,因为此方法只在子类定义,而没有在父类中定义,如果要想调用子类自己的方法,则肯定要使用子类实例,所以此时可以将对象进行向下转型。


例子2:对象向下转型


程序运行结果:

B ——> public void fun1(){}

B ——> public void fun1(){}

B ——> public void fun3(){}

注:1. A  a = new B(); <=>  上个例子中的 B b = new B(); A  a = b;       一个式子相当于直接向上转型了。

2.我去,这个上面画红线的转来转去不是相当于直接:B  b = new B();

3.但是请注意,如果写成 A a = new A(); B b = (B) a; 则会发生运行时错误。  java.lang.ClassCastException : A cannot be cast to B
         


3.使用对象多态性




4. instanceof

    在上面的fun()方法中因为要调用各自子类自己的方法,所以必须进行对象的向下转型,但是为了保证程序在运行时不出现类转换异常,所以在发生向下转型前要使用instanceof 关键字判断是那个子类的实例,以保证程序的运行正确

如下:


5. 关于父类的设计





0 0
原创粉丝点击