我就在想子类中的suoer.display()方法有什么用,于是我自己写了2个类测试。
`package cn.itcast.b_test;
import sun.management.resources.agent;
public class lzm {
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public lzm() {
// TODO Auto-generated constructor stub
}
public void display () {
System.out.println(this.getAge());
System.out.println("父类");
}
}
package cn.itcast.b_test;
import java.util.List;
import org.junit.Test;
import org.eclipse.jdt.internal.compiler.ast.SuperReference;
import org.springframework.test.context.TestExecutionListeners;
import com.sun.org.apache.xalan.internal.xsltc.compiler.sym;
import com.sun.script.javascript.RhinoScriptEngine;
public class lzm1 extends lzm {
public lzm1() {
// TODO Auto-generated constructor stub
}
@Test
public void display() {
super.display();
this.setAge(2);
System.out.println(this.getAge());
super.display();
System.out.println(this.getAge());
System.out.println("子类");
}
}
上面是运行结果,我们可以看到子类的第一个super.display()就是调用父类中的方法,因为我没有设计父类中的age,所以默认是0.
当我在子类中this.setAge(2)使再调用父类中的方法,这时候就会将参数赋值给父类的属性。也就可以实现装饰类了。
那既然子类继承了父类中的方法,为什么要用super呢。
因为我们一般将子类也就是抽象类中的属性设为private,子类通过构造方法将属性值传给super(xx),再父类中的构造方法里this.xx=xx;那么子类也就可以访问改属性了。
引用:https://blog.csdn.net/zuoyang1990/article/details/53471494