1、问题
运行子类,发现值跟自己期望的不同,想了好久没找到原因,请高手指点。
System.out.println(this.parameter + " + " + super.parameter);
这里面的 super.parameter值为零,按道理运行了方法后,值应该是8。
2、代码
//1、父类
public class TestConstructureSuquenceFu {
int parameter;
public void manner() {
System.out.println("父类方法——执行");
this.parameter = 8;
System.out.println(parameter);
}
public static void main(String[] args) {
System.out.println("父类主运行程序运行");
TestConstructureSuquenceFu fu = new TestConstructureSuquenceFu();
System.out.println("=======================");
System.out.println(fu.parameter);
fu.manner();
}
}
//2、运行子类
public class TestConstructureSuquenceZi extends TestConstructureSuquenceFu {
int parameter;
String member;
public void manner() {
System.out.println("子类方法——执行");
this.parameter = 2;
System.out.println(this.parameter + " + " + super.parameter);
}
public static void main(String[] args) {
System.out.println("子类主运行程序运行");
System.out.println("=======================");
TestConstructureSuquenceFu fu = new TestConstructureSuquenceFu();
System.out.println("fu的值为:" + fu);
System.out.println("=======================");
TestConstructureSuquenceZi zi = new TestConstructureSuquenceZi();
System.out.println("zi的值为:" + zi);
System.out.println("=======================");
fu.manner();
/*
System.out.println("父类方法——执行");
this.parameter = 8;
//给fu的parameter对象赋值8;
System.out.println(parameter); //打印parameter参数值,因其在方法中,所以值为8。
*/
System.out.println(fu); // 地址与前值相同
System.out.println(fu.parameter); // 值为8
zi.manner();
/*
public void manner() {
System.out.println("子类方法——执行");
this.parameter = 2; //zi的parameter赋值为2;
System.out.println(this.parameter + " + " + super.parameter);
//this.parameter值为2;
//super.parameter值为0,不知道错在哪里
*/
}
3、执行结果
父类方法——执行
8
TestConstructureSuquenceFu@6442b0a6
8
子类方法——执行
2 + 0