java 重写和子类继承父类构造方法的问题。。。

class zhengfangxing{
int chang;
zhengfangxing(int long1){chang=long1;}
void show()
{
System.out.println("正方形的周长是"+(4*chang));
}
}

class changfangxing extends zhengfangxing{
int chang,kuan;
changfangxing(int long1,int k)
{ super(long1);
kuan=k;}
void show()
{
System.out.println("长方形的周长是"+(2*(chang+kuan)));
}
}

public class chongxie{
public static void main(String [] args){

zhengfangxing a=new zhengfangxing(5);
a.show();
changfangxing b=new changfangxing(5,7);
b.show();
}

}

changfangxing类中的chang无法调用父类的数据 为什么 谢谢

第1个回答  2010-03-17
System.out.println("长方形的周长是"+(2*(chang+kuan)));

这句中 chang 用的是自己类中的变量,如果要用父类中的,要改成

System.out.println("长方形的周长是"+(2*(super.chang+kuan)));
第2个回答  2010-03-17
1,2楼都是正解,坚定完毕
第3个回答  2019-11-14
子类继承父类之后只能重写父类中的protected和public方法,默认没有修饰词的是friendly,同样可以重写,但是private方法就不能重写,即使子类中的方法名和父类的private方法一致,也只能看做是一个新的方法,而不是重写。
override也就是重写,覆写
第4个回答  推荐于2016-04-20
子类中定义的属性chang与父类中的属性重名。
子类的构造函数中super(long1)并没有为子类的属性chang赋值,因此子类的对象在创建时,其属性chang都取了默认值0。
可以这样调用父类的属性:
void show() {
System.out.println("长方形的周长是" + (2 * (super.chang + kuan)));
}
第5个回答  推荐于2016-01-10
子类中定义的属性chang与父类中的属性重名。子类的构造函数中super(long1)并没有为子类的属性chang赋值,因此子类的对象在创建时,其属性chang都取了默认值0。
可以这样调用父类的属性:
void show() {
System.out.println("长方形的周长是" + (2 * (super.chang + kuan)));
}本回答被提问者采纳
相似回答