abstract class Shape{
Shape(){}
public abstract double getGirth(double m,double n);
public abstract double getArea(double m,double n);
}class Oblong extends Shape{
String name;
Oblong(String name){
this.name = name;
}
public double getGirth(double m,double n){
double c = 0;
c = 2*(m + n);
return c;
}
public double getArea(double m,double n){
double s = 0;
s = m * n;
return s;
}
}class Square extends Oblong{
String name;
Square(String name){
super(name);
}
public double getGirth(double m,double n){
double c = 0;
c = 4 * m;
return c;
}
public double getArea(double m,double n){
double s = 0;
s = m * m;
return s;
}
}
System.out.println(x.name + " " + x.getGirth(4,0) + " " + x.getArea(4,0));程序编译运行正常,但是为什么构造函数不能正确执行,name 运行 后是 null ?
Shape(){}
public abstract double getGirth(double m,double n);
public abstract double getArea(double m,double n);
}class Oblong extends Shape{
String name;
Oblong(String name){
this.name = name;
}
public double getGirth(double m,double n){
double c = 0;
c = 2*(m + n);
return c;
}
public double getArea(double m,double n){
double s = 0;
s = m * n;
return s;
}
}class Square extends Oblong{
String name;
Square(String name){
super(name);
}
public double getGirth(double m,double n){
double c = 0;
c = 4 * m;
return c;
}
public double getArea(double m,double n){
double s = 0;
s = m * m;
return s;
}
}
System.out.println(x.name + " " + x.getGirth(4,0) + " " + x.getArea(4,0));程序编译运行正常,但是为什么构造函数不能正确执行,name 运行 后是 null ?
楼主【zyp627】截止到2008-07-26 23:40:57的历史汇总数据(不包括此帖):
发帖的总数量:62 发帖的总分数:830 每贴平均分数:13
回帖的总数量:32 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:62 结贴的总分数:830
无满意结贴数:3 无满意结贴分:60
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:4.84 % 无满意结分率:7.23 %
敬礼!
在Square中自己定义的name把父类的name隐藏了.你通过super初始化了父类定义的name,但是Square定义的name没有初始化.但通过Square的对象访问到的是这个未初始化的name.这两个name,改掉其中一个.
你要是Square x = new Square("name");
所以你的x.name为null;(因为会去找Square的name属性,而Square的name属性,你没有付值)你要是Oblong x= new Square("name");
x.name就不是null了.(取Oblong 的name属性)