(1)this与super
this的用法有三种:1.this.域变量,this.成员方法
2.this(参数)------引用重载的构造方法
3.this指代当前对象
举例:通过this实现两个类之间的双引用
public class FighterPlane {
private String name;
private int missileNum;
private A a;
public FighterPlane(String _name,int _missileNum){
name=_name;
missileNum=_missileNum;
}
public void fire(){
if(missileNum>0){
System.out.println("now fire a missile!");
missileNum-=1;
}
else{
System.out.println("No missileNum left!");
}
}
public void setA(A _a){
if(_a!=null)
{a=_a;}
}
public A getA(){
if(a!=null)
{return a;}
else return null;
}
public String getName(){
return name;
}
public int getMissileNum(){
return missileNum;
}
}
public class A {
FighterPlane fp;
public A(FighterPlane fpp){
this.fp=fpp;
fpp.setA(this);
}
public void invoke(){
System.out.println(fp.getName());
}
}
public class run {
public static void main(String[] args){
FighterPlane ftp=new FighterPlane("su35",10);
A a=new A(ftp);
a.invoke();
}
}
super用法:super能指代父类中的域变量或方法。
(1)super.域变量,super.成员方法
(2)super(参数)
举例:
public class A {
int x=4;int y=1;
public void Printme(){
System.out.println("x="+x+"y="+y);
System.out.println("class name:"+getClass().getName());
}
}
public class AA extends A{
int x;
public void Printme(){
int z=super.x+6;
super.x=5;
super.Printme();
System.out.println("I am an "+getClass().getName());
x=6;
System.out.println("z="+z+"x="+x+"super.x="+super.x+"y="+y+"super.y="+super.y);
}
public static void main(String arg[]){
int k;
A p1=new A();
AA p2=new AA();
p1.Printme();
p2.Printme();
}
}
(2)构造方法多态
在此重点学习构造方法的重载
一个类的若干个重载构造方法之间可以相互调用。当一个构造方法需要调用另一个构造方法时,
需要使用关键字this,同时这个调用语句应该是整个构造方法的第一个可执行语句。使用构造方
法的优点是最大限度提高对已有代码的复用程度。