多态性——对象的多态性
来源:互联网 发布:淘宝宝贝被管控怎么办 编辑:程序博客网 时间:2024/05/17 17:44
一、在java中主要通过以下两种方式实现多态:
1、方法的重载和覆写(具体的请查看以前的文章)
2、对象的多态性
二、对象的多态性
对象的多态性主要分两种类型,向上转型和向下转型
1、对象的向上转型
(1)格式: 父类 父类对象 = 子类实例;
(2)代码示例如下:
package lkp;//定义一个类Aclass A{public void fun1(){System.out.println("A");}public void fun2(){this.fun1();}}//定义一个子类B,继承Aclass B extends A{public void fun1(){//覆写父类中的fun1方法System.out.println("B");}public void fun3(){//子类自己定义的方法System.out.println("C");}}class Test{public static void main(String args []){B b =new B();//定义子类实例化对象A a = b; //向上转型 , 子类——》父类a.fun1();//次方法是被子类覆写过}}(3)注意
使用父类对象调用fun1方法,实际上调用的方法是被子类覆写过的方法
即如果对象发生了向上转型,所调用的方法一定是被子类覆写过的方法
2、对象的向下转型
(1)格式:子类 子类对象 = (子类) 父类实例
(2)代码示例如下:
package lkp;//定义一个类Aclass A{public void fun1(){System.out.println("A——1");}public void fun2(){this.fun1();}}//定义一个子类B,继承Aclass B extends A{public void fun1(){//覆写父类中的fun1方法System.out.println("B——1");}public void fun3(){//子类自己定义的方法System.out.println("B——3");}}class Test{public static void main(String args []){A a = new B();//向上转型B b = (B)a;//向下转型b.fun1();//调用被覆写的方法b.fun2();//调用父类的方法b.fun3();//调用子类自己定义的方法}}(3)注意
向上转型,实现的是子类中的方法。
在进行对象的向下转型前,必须首先发生对象的向上转型,否则将出现对象转换异常。
3、对象多态性的应用
package lkp;//定义一个类Aclass A{public void fun1(){System.out.println("A——1");}public void fun2(){this.fun1();}}//定义一个子类B,继承Aclass B extends A{public void fun1(){//覆写父类中的fun1方法System.out.println("B——1");}public void fun3(){//子类自己定义的方法System.out.println("B——3");}}//定义一个子类C,继承Aclass C extends A{public void fun1(){//覆写父类的fun1方法System.out.println("C——1");}public void fun4(){//子类自己定义的方法System.out.println("C——4");}}class Test{public static void main(String args []){fun(new B());//传递B类的实参,产生向上转型fun(new C());//传递C类的实参,产生向上转型}//未使用多态性//public static void fun(B b){//b.fun1();//}//public static void fun(C c){//c.fun1();//}public static void fun(A a){//接收父类的对象a.fun1();}}未使用多态性的程序,当产生一个A类的子类时,fun()方法就要重载一次。则每次扩充子类都必修修改类本身
使用多态性的程序,此时由于在fun()方法中使用了对象的多态性,所以可以接受任何的子类对象,这样无论
子类如何增加,fun()方法都不需要做任何修改。因为一旦发生对象的向上转型关系后,调用的方法一定是被子类
覆写过的方法。
0 0
- 多态性——对象的多态性
- Java多态性——对象的多态性(向上、向下转型)
- 4.3对象的多态性
- Java对象的多态性
- 浅谈-----对象的多态性
- java对象的多态性
- java对象的多态性
- 对象的多态性
- 对象的多态性
- 面向对象的多态性
- java对象的多态性
- 对象的多态性
- 对象的多态性
- java对象的多态性
- 面向对象的多态性
- 面向对象(高级)——对象的多态性
- 面向对象(高级)——对象的多态性
- Java 对象的多态性——必须画图理解
- ubuntu13搭建rtmp流媒体服务器
- 题目1190:大整数排序
- 最大公约数——递归法
- MSP430的AD7705驱动程序
- java学习123之Object类
- 多态性——对象的多态性
- 怎样将JPG转换成PDF
- 自定义RadioButton
- my dreamed cards
- getWidth和getMeasuredWidth在何时可以得到正确数值
- XML转json输出
- Ubuntu 下配置 SSH服务全过程及问题解决
- Java字节码框架ASM-读写字节码的用法
- @RequestMapping 用法详解之地址映射(入门篇)