求一个JAVA问题 找不到符号

来源:百度知道 编辑:UC知道 时间:2024/05/08 00:43:57
class point{
int x,y;
point(int a,int b){
x=a;y=b;
}
}
class fatherCircle{
point p;
int r=1;
void setpoint(point p1){
this.p=p1;
}
public point getpoint(){
return p;
}
public fatherCircle(point p) {
setpoint(p) ;
}
}
class sunCircle extends fatherCircle{
void setr(int r){
this.r=r;
}
public int getr(){
return r;
}
public sunCircle(point p,int r) { ////找不到符号 望高手帮我看一看
setr(r) ;
}
}

public class circles {
public static void main(String[] args){
int r=10;
point p=new point(10,20);
System.out.println("x="+p.x+" y="+p.y);
point p1=new point(11,22);
fatherCircle fatherObject=new fatherCircle(p1);
System.out.println("x="+p.x+" y=&q

哈哈 !
居然大家都不知道 那么楼主可以把分给我了!

你出错的代码:
public sunCircle(point p,int r)
{
setr(r) ;
}

什么都定义了啊,居然找不到符号? 天啊!搞什么东东啊?

呵呵 可是你知道吗?java的编译系统在编译的时候做了这样的一件事情:
它把你的代码变为了:

public sunCircle(point p,int r)
{
super();
/*
这是编译器帮你加的,加的地方一定是构造函数的第一句话的前面,那怕是你不写这句话,甚至你根本没有写构造函数,他一样给你加.这将调用这个类的父类的无参数构造方法
*/
setr(r) ;
}

好了,现在我问你,现在父类有无参数的构造方法吗? 能找到符号吗?

记住拉:
如果你不显视的调用父类的构造方法,编译器将为你生成super();这条语句,放在构造函数的第一句话的位置,那怕是你不写这句话,甚至你根本没有写构造函数.这将调用这个类的父类的无参数构造方法

啊! 看到这里别忘了最重要的事情,给分我啊,^-^!

所以把你的代码变成这样就可以了:

public sunCircle(point p,int r)
{
//注意这里
super(p);//调用父类的构造方法,此时编译器不帮你生成super()!
setr(r) ;
}

路过,不会。

, 不清楚了