Ric*_*hen 0 java properties super
我遇到了一个困扰我的问题,它是关键字'super',我的测试代码是这样的:
package test;
public class Parent {
private String name;
public Parent(){
this.name = "parent";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void showName(){
System.out.println(this.name);
}
}
public class Child extends Parent{
public Child(){
this.setName("Child");
}
public void showName(){
System.out.println(super.getClass().toString());
System.out.println(super.toString());
super.showName();
System.out.println(super.getName());
}
}
public class Test {
public static void main(String[] args) {
Child d = new Child();
d.showName();
}
}
Run Code Online (Sandbox Code Playgroud)
所以结果是这样的:
class test.Child
test.Child@2207d8bb
Child
Child
Run Code Online (Sandbox Code Playgroud)
我对'super'的理解是它是对当前实例的父实例的引用,所以我期望的输出就像'Parent',从结果来看,我错了,就像当前实例调用父方法一样,' super'不是父实例,是我的理解对吗?有没有办法让我只能初始化Child类的父实例?
我对'super'的理解是它是对当前实例的父实例的引用
不 - 没有"父实例"这样的东西.创建实例时,只创建了一个对象 - 一个实例Child,它也继承了所有的字段和方法Parent.
super 有两种使用方式:
Child.showName-它的呼唤Parent.showName,但在相同的情况下(因为是只有一个实例)| 归档时间: |
|
| 查看次数: |
684 次 |
| 最近记录: |