OOP h20
定义合适的类、接口,使得下面的代码编译并能正确运行。
Test:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| package com.huawei.classroom.student.h20;
public class Test {
public Test() { }
public static void main(String[] args) { A a = new D(); C c = new D(); D d = new D();
System.out.println("pass 1");
B b = c; System.out.println("pass 2");
a = d; System.out.println("pass 3");
c=new E(); System.out.println("pass 4");
a=new A(); if (!(a instanceof B)) { System.out.println("pass 5"); }
if (!(c instanceof A)) { System.out.println("pass 6"); } if (!(c instanceof D)) { System.out.println("pass 7"); }
} }
|
综上:
- D 继承/实现 A
- D 继承/实现 C
- C 继承/实现 B
- E 继承/实现 C
- A 不继承/实现 B
- C 不继承/实现 A
- C 不继承/实现 D
D 同时继承/实现 A 和 C,由于 Java 不支持多继承,猜测可能为多重继承——由于 C 不继承/实现 A、A 不继承/实现 B、C 继承/实现 B,则 A 和 C 之间不存在继承关系。所以得出结论:A 和 C 一个为接口、一个为类,D 继承了类、实现了接口。
1 2 3 4 5 6 7
| package com.huawei.classroom.student.h20;
public class A { }
|
1 2 3 4 5 6 7
| package com.huawei.classroom.student.h20;
public interface B { }
|
1 2 3 4 5 6 7
| package com.huawei.classroom.student.h20;
public interface C extends B { }
|
1 2 3 4 5 6 7
| package com.huawei.classroom.student.h20;
public class D extends A implements C { }
|
1 2 3 4 5 6 7
| package com.huawei.classroom.student.h20;
public class E implements C { }
|