首页 > 解决方案 > Java继承是不是抄了Super内容?

问题描述

我真的很想了解继承是如何工作的,

假设我们有 A 类和 B 类,B 扩展 A,A 包含一些在公共和方法上设置的属性(引用类型和原始类型)

这些属性和方法是否被复制到 B 类中?我确实读过方法不是复制的,而是通过引用访问的。

当我们创建 B 的实例时继承的引用类型属性怎么样?他们必须在内存中占用一些空间,该引用存储在哪里?在 A 级还是 B 级?原始类型又如何呢?它们会被复制到 B 类中吗?它们是否在与 B 的其他属性相同的位置?

或者当您创建 B 类的对象时,您实际上创建了 A 和 B 的对象并且它们保持某种关系?

一些解释会有所帮助。

标签: javainheritance

解决方案


假设有一个 Animal 类:

public class Animal {
    private String _name;

    public Animal(String name) { _name = name;}

    public String getName() {return _name;}
}

现在有一个 Dog 类:

public class Dog extends Animal {
    public Dog() {
        super("Dog");
    }
}

现在,如果你这样做:

 Animal dog = new Dog();
 System.out.println(dog.getName());

这就是使变量名可从Dog类到Animal.


推荐阅读