java继承向上向下转型_java 多态-java向下转型-java向上转型-嗨客网

Java语言多态教程

多态是针对于父子类而言的,即父类的对象有时可以转换成子类的类型。子类的对象有些情况下可以转换成父类类型。

多态主要分为两种类型,向上转型,子类对象转换成父类对象。向下转型,父类对象转换成子类对象。

Java语言多态

语法

父类 父类对象 = 子类实例; //对象向上转型

子类 子类对象 = (子类) 父类实例; //对象向下转型

参数

参数

描述

父类

父类的名字

子类

子类的名字

父类对象

父类 new 出来的一个对象

子类对象

子类 new 出来的一个对象

说明

多态还是针对于父类和子类而言的,将子类转换成父类,直接将子类对象赋给父类对象就可以了,将父类转换成子类对象,需要将父类对象进行强制转换,在前面将父类标识出来。

案例

我们定义一个父类

package com.haicoder.net.changetype;

public class FatherClass{

public void fun1(){

System.out.println("调用父类的 fun1 方法");

}

public void fun2(){

System.out.println("调用父类里面的 fun2 方法");

}

}

定义一个子类

package com.haicoder.net.changetype;

public class ChildClass extends FatherClass{

public void fun1(){

System.out.println("调用子类的 fun1 方法");

}

public void fun3(){

System.out.println("调用子类的 fun3 方法");

}

}

定义一个测试类

package com.haicoder.net.changetype;

public class TestMain{

public static void main(String[] args){

System.out.println("嗨客网(www.haicoder.net) \n");

System.out.println("=======向上转型开始=====");

ChildClass childClass = new ChildClass();

FatherClass fatherClass = childClass;

fatherClass.fun1();

System.out.println("=======向上转型结束=====\n");

System.out.println("=======向下转型开始=====");

FatherClass fatherClass1 = new ChildClass(); //发生了向上转型

ChildClass childClass1 = (ChildClass) fatherClass1; //发生向下转型

childClass1.fun1();

childClass1.fun2();

childClass1.fun3();

System.out.println("=======向下转型结束=====");

}

}

运行结果如下:

cb6df2f6a688aeec5ce0f39c5ffa685d.png

从父类转换成子类表示向下转型,从子类转换成父类表示向上转型。

向上转型的时候,我们看到,虽然是父类的对象的 fun1 方法,但是打印的结果是调用子类的 fun1 方法。所以我们可以理解为如果对象向上发生了转型,调用的方法一定是被子类覆盖写过的方法。但是此时是无法调用子类里面的 fun3 方法的。

向下转型的时候,我们看到必须要先对对象向上转型,然后再能向下转型,否则会出现对象转换异常。

package com.haicoder.net.changetype;

public class TestMain{

public static void main(String[] args){

System.out.println("嗨客网(www.haicoder.net) \n");

System.out.println("=======向上转型开始=====");

ChildClass childClass = new ChildClass();

FatherClass fatherClass = childClass;

fatherClass.fun1();

System.out.println("=======向上转型结束=====\n");

System.out.println("=======向下转型开始=====");

FatherClass fatherClass1 = new FatherClass();

ChildClass childClass1 = (ChildClass) fatherClass1;

childClass1.fun1();

childClass1.fun2();

childClass1.fun3();

System.out.println("=======向下转型结束=====");

}

}

运行结果如下:

aaab0a0e02911603b2e7c4fc6b343388.png

Java多态总结

多态是针对父子创建的对象而言的。向上转型的时候,调用的方法一定是被子类覆盖写过的方法。向下转型的时候,必须要先对对象向上转型,然后再能向下转型,否则会出现对象转换异常。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值