多态的强制转换

多态的强制转换
多态的强制转换的好处:如果我们用了多态,但是子类特有的属性和方法父类的指针是没有用的,因为父类和子类的类型不一样,所以这时候就需要强制转换,就跟八大基本类型的转换差不多,就像把一个int类型的数字转换成double类型的数字一样,大类型转换成小类型需要强制转换,小类型转换成大类型不需要转换,
同理可得,父类像子类转换需要强制转换,子类转换成父类则是自动转换
多态的强制转换可以分为向上强转型和向下转型
用例子来说明这个问题:

class A4 extends paper
{
  void wirte()
  {
      System.out.println("用A4纸张写字");
  }
  void test()
  {
      System.out.println("test");
  }
}
class A5 extends paper
{
  void wirte()
  {
      System.out.println("用A5纸张写字");
  }
}
class Test
{
    public static void main(String[] args)
    {
         //向上转型 
     paper p=new A4();
     /*
     向上强制转换时不用强制,是因为父类的东西子类都有,所以编译器去子类中找这个方法时是能找到的,所以不会报错
     */
     p.wirte();
     //向下转型
     A4 a=(A4)p;
     /*因为p是父类的指针,所以如果想调用子类特有的属性时,编译器会报错,因为父类中没有子类特有的属性,编译器去父类中找不到这个方法就会报错,所以要在父类的p的这个对象前面加一个子类的类名A4,让编译器去子类中寻找这个方法.*/
     a.test();
     paper b=new A5();
     b.wirte();
    }
}
abstract class paper
{
 abstract void wirte();
}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值