码迷,mamicode.com
首页 > 其他好文 > 详细

引用类型的强制类型转换

时间:2018-07-01 19:04:00      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:程序   运行时   exception   ceo   style   color   父类   成功   引用类型   

1.什么时候需要用到强制类型转换

当把子类变量赋给父类引用变量时,这个父类引用变量只能调用父类拥有的方法,

不能调用子类特有的方法,即使它实际引用的是子类变量。

如果需要让这个父类引用变量调用它子类的方法,就必须把它强制转换成子类类型。

 

2.引用类型之间要强制转换成功需要有什么条件

把父类实例转换成子类类型,则这个对象必须实际上是子类实例才行,否则将在运行时引发ClassCastException。

 

3.让程序更健壮的写法:

在强制转换前使用instanceof运算符判断是否可以成功转换。

示例如下:

 1 class Base
 2 {
 3     private int value;
 4     public void say()
 5     {
 6         System.out.println("Base class");
 7     }
 8 }
 9 
10 class Sub extends Base
11 {
12     public void say()
13     {
14         System.out.println("Sub class");
15     }
16     //子类的特有方法
17     public void read()
18     {
19         System.out.println("Are you sleeping?");
20     }
21 }
22 public class Test 
23 {
24     public static void main(String[] args) 
25     {
26         Base base=new Sub();
27         base.say();//多态,会调用子类的方法
28 
29         if(base instanceof Sub)//先判断能否转换成功
30         {
31             ((Sub)base).read();//强转过后才可以调用read方法
32         }
33 
34     }
35 }

 

引用类型的强制类型转换

标签:程序   运行时   exception   ceo   style   color   父类   成功   引用类型   

原文地址:https://www.cnblogs.com/wsw-tcsygrwfqd/p/9250762.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!