Day4-3.31

(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,同时这个调用语句应该是整个构造方法的第一个可执行语句。使用构造方

法的优点是最大限度提高对已有代码的复用程度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值