对象的多态性向上转型和向下转型

多态
某一个事物,在不同时刻表现出来的不同状态。
举例: Cat c=new Cat();
Animal a=new Cat();
猫可以是猫的类型。猫 m = new 猫();
同时猫也是动物的一种,也可以把猫称为动物。动物 d = new 猫();

向上转型和向下转型

向上转型:子类对象变为父类对象
格式:父类 父类对象=子类实例,自动转换;
public class ZhuanXingDemo {
public static void main(String[] args) {
//B b=new B(); //实例化的是子类对象
//b.Fu(); //调用被子类覆盖过的方法
A a=new B();//实例化子类对象,对象向上转型
a.Fu();//调用被子类覆盖过的方法
}
}
class A{
public void Fu(){
System.out.println(“父类方法”);
}
}
class B extends A{
public void Fu(){
System.out.println(“重写父类”);
}
}
向下转型:父类对象变成子类对象
格式:子类 子类对象=(子类)父类实例,强制转换;
public class ZhuanXingDemo {
public static void main(String[] args) {
//B b=new B(); //实例化的是子类对象
//b.Fu(); //调用被子类覆盖过的方法
// A a=new B();//实例化子类对象,对象向上转型
// a.Fu();//调用被子类覆盖过的方法
A a=new B();//实例化子类对象,对象向上转型
B b=(B)a;// 对象需要强制性向下转型
b.Fu();// 调用被子类覆盖过的方法
}
}
class A{
public void Fu(){
System.out.println(“父类方法”);
}
}
class B extends A{
public void Fu(){
System.out.println(“重写父类”);
}
}
错误的向下转型
A a =new A;//直接实例化父类对象
B b=(B)a;//强制向下转型,此处产出“ClassCastException”转型异常
b.Fu();//此语句无法执行

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值