【发布时间】:2020-02-03 03:21:38
【问题描述】:
这是一个与继承有关的问题,我在一次采访中被问到。任何人都可以向我解释在下面给出的 4 种对象创建案例中会发生什么。任何人都可以帮我解决这个问题。提前致谢
class A {
int i = 10;
void printHi() {
System.out.println("Hi in A");
}
}
class B extends A {
int k = 20;
void printHi() {
System.out.println("Hi in B");
}
}
public class Test {
public static void main(String[] args) {
A a = new A();// 1.a.k is possible?
A a = new B();//2.
B b = new A();//3.b.i is possible?
B b = new B();//4.
}
}
【问题讨论】:
-
您是否尝试添加代码以尝试访问
a.k和b.i,是否有效? -
您是否尝试编译此代码?
-
学习 OO 的第一件事 - 避免使用无意义的名称,如
A、B等。而是将它们替换为有意义的名称,如Animal和Budgie。那么,Animal a = new Budgie()是否允许? (是的,因为 Budgie 是动物)。Budgie B = new Animal()是否允许? (不,因为动物可能不是 Budgie - 除了 Budgies 之外,可能还有其他动物)。 -
1.不 2. 直接,不。有反射是 3. 编译错误 4. 是(假设
Test和A与B在同一个包中,否则否)。 -
@ElliottFrisch 2. 演员是的。
标签: java oop inheritance