关于多态的类型转换

关于Java类型的转换,就是因为Java的三大特性之一的多态造成的,正是因为多态让我们在写程序时,少些了很多代码,并且实现了很大的扩展性,比如在方法中的形参中我们定义为父类引用,但实际传入的实参是子类对象,那么这个父类下的所有子类都可以传入并且在方法中调用,实际上程序运行时是运行的子类,这就是官方所说的父类引用指向了子类对象;

所有的事物有利必有弊,如果你在方法中调用的了子类独有的方法,也就是说,不是从父类继承的方法,那么编译器就会报异常,其实编译器有时候非常聪明,但有时候又傻的可爱,为什么呢?举一个大家都知道的例子,Animal是Pig的父类,如果你在main方法里写Animal animal = new Pig();你调用Pig不是从Animal类里继承的方法,那么你就会看到红色波浪线了,编译器在这里,他只知道这里声明了一个Aniaml,虽然你实际上是Pig,编译器就是这样死板;这里有两条方法解决这个问题

A:把animal进行类型转换,强转为Pig,在调用其方法,

B:用instanceof关键字if(animal instanceof pig){

则在这里面调用Pig的方法

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值