1. 程式人生 > >this 與 super 用法

this 與 super 用法

package Extends;

/*super關鍵字用來訪問父類內容而this關鍵字用來訪問本類內容,方法有三種

1.在本類的成員方法中,呼叫本類的成員變數
2.在本類的成員方法中,訪問本類的另一個成員方法
3.在本類的構造方法中,訪問本類的另一個構造方法
    A.this(。。。)呼叫必須是構造方法的第一個語句(即有了this之後不會再贈送super)
    B.super和this兩種構造呼叫,不能同時使用
*
* */
public class  Character_this extends Fu {
    int num = 20;

    public Character_this() {
        this(10);//呼叫本類中一個引數的構造方法
        System.out.println("構造方法1");

    }

    public Character_this(int n) {
        this(1,2);
        System.out.println("構造方法2");
    }

    public Character_this(int n, int m) {
        System.out.println("構造方法3");
    }

    public void showNum() {
        int num = 10;
        System.out.println("訪問本類成員變數:");
        System.out.println(num);//呼叫區域性變數
        System.out.println(this.num);//呼叫成員變數
    }


    public void methodA() {

        System.out.println("訪問本類成員方法:");
        System.out.println("methodA");
        this.showNum();

    }
}

package Extends;
/*super關鍵字的三種用法:
* 1.在子類的成員方法中,訪問父類的成員變數
* 2.在子類的成員方法中,訪問父類的成員方法
* 3.在子類的構造方法中,訪問父類的構造方法(包括無參以及全參)
*
* */
public class super關鍵字的三種用法 extends Fu {
    int num = 20 ;
    public super關鍵字的三種用法(){

        super();//訪問父類的構造方法
    }
    public void methodsuper關鍵字的三種用法(){

        System.out.println(super.num);//父類中的num
    }
    public void method(){
        super.method();//訪問父類中的method
        System.out.println("子類方法");
    }
}

package Extends;
/*JAVA類的繼承的特點:(以後會學介面繼承的特點)
  1.java語言是單繼承的
      一個類的(直接父類)只有一個
  2.java語言可以多級繼承
     java.lang.Object是所有其他類的父類
  3.一個子類的直接父類是惟一的,但是一個父類可以
  擁有多個子類
* */
public class Fu {
    int num= 10 ;
    public void method(){
        System.out.println("父類方法");
    }
}

package Extends;

public class impl {
    public static void main(String[] args) {
        Character_this ch = new Character_this();//呼叫本類另一個構造方法
//        ch.showNum();//呼叫本類成員變數
//        ch.methodA();//呼叫本類另一個成員方法
        super關鍵字的三種用法 sup = new super關鍵字的三種用法();
        sup.methodsuper關鍵字的三種用法();
        sup.method();
        int num =sup.num;
        System.out.println(num);
    }
}