java - Java继承是不是抄了Super内容?
问题描述
我真的很想了解继承是如何工作的,
假设我们有 A 类和 B 类,B 扩展 A,A 包含一些在公共和方法上设置的属性(引用类型和原始类型)
这些属性和方法是否被复制到 B 类中?我确实读过方法不是复制的,而是通过引用访问的。
当我们创建 B 的实例时继承的引用类型属性怎么样?他们必须在内存中占用一些空间,该引用存储在哪里?在 A 级还是 B 级?原始类型又如何呢?它们会被复制到 B 类中吗?它们是否在与 B 的其他属性相同的位置?
或者当您创建 B 类的对象时,您实际上创建了 A 和 B 的对象并且它们保持某种关系?
一些解释会有所帮助。
解决方案
假设有一个 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
.
推荐阅读
- google-genomics - TCGA 和 GTEX RNA 的 TPM
- swift - swift:一个类或结构可以有一种“主要”属性,可以在没有点符号的情况下访问吗?
- excel - 如何使用 FindFirst 函数比较 2 个内存记录集?
- c++ - 从断言调用时缺少 llvm-cov 覆盖
- python - 如何在 Python 中循环 GET 请求以从数据帧中的分页 API 接收所有数据
- docker - Consul 连接 Docker 容器中的上游接口
- javascript - 如何从 jquery 对话框中跟踪链接
- html - 如何使输入的边框位于父 div 的前面?
- regex - 最多包含三个单词的正则表达式
- r - R - data.frame 中来自现有数据的新条件列不起作用