在此代码中
class Foo {
public int a = 3;
}
class Bar extends Foo {
public int a = 8;
}
public class HelloWorld {
public static void main(String[] args) {
Foo f = new Bar();
Bar f = new Bar();
}
}
之间有什么区别
Foo f = new Bar();
和
Bar f = new Bar();
谢谢
答案 0 :(得分:0)
这种关系称为is-a关系。每个Bar
对象都是Foo
个对象。但是,Foo
对象不能是Bar
对象。
当您致电Foo f = new Bar()
时,您正在创建一个Foo
对象,这意味着只能在f中访问Foo的字段。也就是说,f.a
在这种情况下是3.
另一方面,Bar f = new Bar()
会创建一个Bar
对象,这意味着f.a
在这种情况下会给你8个。