Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 内部类和子类之间的创建差异_Java_Inheritance_Nested_Subclass_Inner Classes - Fatal编程技术网

Java 内部类和子类之间的创建差异

Java 内部类和子类之间的创建差异,java,inheritance,nested,subclass,inner-classes,Java,Inheritance,Nested,Subclass,Inner Classes,我注意到,要创建内部类,我们需要外部类的实例。但是为了创建一个子类,我们还需要父类来创建实例 如果有的话,它们之间有什么区别?严格地说是创造,而不是他们如何工作。我可以想象一下:有一个父对象,里面是子对象对象,就像内部类对象在堆中的外部类对象一样?我是否接近这一点?也许可以用一幅图片/一个类比来表示这两种关系: i、 e: janeDoe子类实例只是一个对象,但它在一个实例中是两种类型 内部类实例johnDoe,与外部类实例janeDoe不同。他们之间有着非常密切的联系,他们知道如何相互利用

我注意到,要创建内部类,我们需要外部类的实例。但是为了创建一个子类,我们还需要父类来创建实例


如果有的话,它们之间有什么区别?严格地说是创造,而不是他们如何工作。我可以想象一下:有一个父对象,里面是子对象对象,就像内部类对象在堆中的外部类对象一样?我是否接近这一点?

也许可以用一幅图片/一个类比来表示这两种关系:

i、 e:

  • janeDoe
    子类实例只是一个对象,但它在一个实例中是两种类型
  • 内部类实例
    johnDoe
    ,与外部类实例
    janeDoe
    不同。他们之间有着非常密切的联系,他们知道如何相互利用

@Hades不,我只是从那个问题上来的。。我的目标是创造和对象,而不是功能性。真棒的回答,谢谢伙计!只有一个小问题(在子类示例中)。当图表中没有超类对象时,为什么总是调用超类构造函数?构造函数不负责创建新对象吗?那么为什么没有
new-Mother()
呢?@Stefan我只提到了我们在创建对象时显式进行的构造函数调用(即,我忽略了类本身进行的所有其他构造函数调用,无论是否显式)。可以把它看作是实例化(不管有多少本地或继承的构造函数运行,都会创建一个实例)。对不起,我不太擅长这一点:)但如果你画了一幅完整的图,那么在创建女儿时就必须有母亲对象?@Stefan没必要感到抱歉。我知道这张照片有可能显示出一些模棱两可的地方。思考左面的最好方式是,女儿也会因为是女人而接受母亲的所有基因和行为,但女儿可以作为一个人独立存在。但是胎儿不能独立存在(需要母亲的实例),而且胎儿可以拥有母亲的基因/行为这一事实在这种情况下是无关紧要的——这就是为什么我把它命名为
johnDoe
,一个男性:-)。“我会把母亲/女儿换成更精确的东西。@Stefan我认为女人/母亲的类比比母亲/女儿更准确。我已经更新了图片。