如何在Java中实例化派生类对象?

时间:2016-06-20 08:17:37

标签: java

在此代码中

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();

谢谢

1 个答案:

答案 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个。