结发受长生

止静

python/python web (bash shell) | 嵌入式

java - day13 - ImplementDemo

接口实现、继承等关系的运用案例
P.S: 强制转换,看引用变量指向的对象与目标数据间的关系。
可运用 "引用变量 instanceof 目标数据" 来判断是否可用强转
 1 package com.implementdemo;
 2 
 3 /*接口实现、继承等关系的运用*/
 4 public class ImplementDemo {
 5     public static void main(String[] args){
 6         Abs x = new Aoo();
 7 
 8         /*
 9         Aoo xx = (Aoo)x;  //可完全访问Aoo,强转
10         x.b();
11         xx.a();
12         x.a();
13         */ //无法访问
14 
15         /*
16          * 强制转换,看引用变量指向的对象,
17          * 即是看该对象与目标数据之间的关系
18          * */
19         if(x instanceof Boo){
20             Boo xx = (Boo) x;
21             xx.b();
22             xx.num2 = 5;  //ClassCastingException 类型转换异常
23         }
24 
25         if(x instanceof Inter1){
26             Inter1 xx =(Inter1) x;
27             xx.a();
28         }
29 
30         Inter1 y = new Aoo();  //向上造型
31     }
32 }
33 
34 interface Inter1{
35     abstract void a();
36 }
37 abstract class Abs{
38     public abstract void b();
39 }
40 
41 class Aoo extends Abs implements Inter1{
42     int num1;
43     public void a(){
44         System.out.println("a");
45     }
46     public void b(){
47         System.out.println("b");
48     }
49 }
50 class Boo extends Abs {
51     int num2;
52     public void b(){}
53 }

 

posted on 2017-06-07 23:00  落羽生  阅读(146)  评论(0编辑  收藏  举报

导航

<>