运用super关键字实现子类调用父类的构造方法。
用this关键字实现当前类的对象调用成员变量或成员方法。
代码解释
class Point2{
protected int x,y;
Point2 ( int a , int b){
setPoint(a,b);
}
public void setPoint (int a, int b){
x = a; y = b;
}
}
class Line2 extends Point2{
protected int x,y;
Line2 (int a, int b) { super(a,b); setLine(a,b);}
public void setLine(int x, int y){
this.x = x + x; this.y = y;
}
public double length(){
int x1 = super.x, y1 = super.y , x2 = this.x, y2 = this.y; //可以看出这里的 x1 和 y1 是类Point2 的变量, 而 x2 和 y2 是类Line2 变量。
return Math.sqrt((x2-x1) * (x2-x1) + (y2 - y1) * (y2 - y1) ;
}
public String toString(){
return "直线端点:[" + super.x + ","super.y + "][" + x + "," + y + " ] 直线长度: " + this.length();
}
}
public class exp5_3 {
public static void main(String args[]){
Line2 line = new Line2(50,50);
System.out.println("/n" + line.toString());
}
}
- this 可以代表当前类或对象本身。在一个类中, this 表示对当前类的引用,在使用类的成员是隐含着 this 引用。 尽管可以不明确地写出,当一个类被实例化为一个对象时,this 就是对象名的另一种表示。通过this可顺利的访问对象,凡是在需要使用对象的地方都可以用this 代替。
- super代表父类,如果子类的变量隐藏了父类的变量,使用不加引用的变量一定是子类的变量,如果使用父类的变量,就必须加上 super 引用。同样的道理,如果有方法覆盖的发生,调用父类的方法时也必须加上super引用。
- super()可用来调用父类的构造方法。
让我想起了鸣人和自来也在一起的日子,不如把蛤蟆文太和蛤蟆吉看做父类和子类,鸣人刚和自来也历练的时候,常常召唤的是蛤蟆吉,这就是用子类对象的过程,this 是鸣人的另一种表示, 如果想要召唤文太,就要看 super 自来也的了,加上super引用,用的就是父类蛤蟆文太,自来也真的是亦师亦父,是鸣人的super。