关于JAVA的继承

来源:百度知道 编辑:UC知道 时间:2024/05/16 11:54:08
class Point{
protected int x,y;
public Point(int a,int b)
{
x=a;
y=b;
System.out.println("point constrator:"+this.tostring());
}
public String tostring()
{return "["+x+","+y+"]";}
}
class Circle extends Point
{
protected double radius;
public Circle(double r,int a,int b)
{

super(a,b);
radius=r;
System.out.println("circle constrator:"+this.tostring());
}
public String tostring()
{return "center"+super.tostring()+"radius="+radius;};
}
public class test
{
public static void main(String[] args)
{
Circle circle1,circle2;
circle1=new Circle(4.5,72,29);
circle2=new Circle(10.0,5,5);
}
}
JAVA结果输出的是
point constrator:center[72,29]radius=0.0
circle constrator:center[72,29]radius=4.5
point constrator:center[5,5]radius=0.0

注意:类Circle的构造方法:

protected double radius;
public Circle(double r,int a,int b)
{
super(a,b);
radius=r;
System.out.println("circle constrator:"+this.tostring());
}

可以写成:

protected double radius;
public Circle(double r,int a,int b)
{

x=a;
y=b;
System.out.println("point constrator:"+this.tostring());

radius=r;
System.out.println("circle constrator:"+this.tostring());
}

可以理解为super(a,b)作用就是把父类的构造方法原封不动地搬过来用了。用的所有变量方法都是他自己的。他自己改了就调用他自己的,他没改那就用父类的。调用super的时候,这里只有一个对象,就是从子类产生的对象,this当然指的是子类了。如果按照你的结果来说的话,那哪个对象产生
point constrator:[72,29]
point constrator:[5,5]
这两条结果呢。

不过这个概念确实不容易理解,多思考思考,模拟模拟,就清晰了。

好运!~

class Point{
protected int x,y;
public Point(int a,int b)
{
x=a;
y=b;
System.out.println("point constrator:"+this.tostring());
}