1. 程式人生 > >類方法 例項方法 構造方法 this關鍵字

類方法 例項方法 構造方法 this關鍵字

類方法:    

  1.用static修飾的是類方法.

  2.無論是例項方法還是類方法,在物件建立之後,都可以用“.”運算子呼叫這些方法。

  3.JAVA語言中,類中的類方法,在該類載入到記憶體時,就分配了相應的入口地址,所以類方法不但可以被任何物件呼叫執行,也可以直接通過類名呼叫,入口地址直到程式退出的時候才會被取消。

  4.因此JAVA語言允許通過類名直接呼叫類方法,而例項方法則不能通過類名呼叫。

  5.而且類方法不能操作例項變數,也不能呼叫例項方法,因為在類建立物件之前,例項成員變數沒有分配記憶體,而且例項方法也沒有入口地址。

  如果要在類方法中呼叫例項變數,可以先建立一個類的例項,然後通過例項訪問該變數。

class NoStaticError{
      String a = "hello";
      public static void main(String[] args){
            NoStaticError b = new NoStaticError();
             System.out.println(b.a);
      }
}

   6.this表示某個物件,所以this關鍵字只能出現在例項方法和構造方法中。 

   7.如果一個方法不需要操作例項成員就可以實現某種功能,就可以考慮將這樣的方法申明為類方法,這樣可以避免建立物件浪費記憶體

例項方法:

  1.不用static修飾的是例項方法.

  2.例項方法只能通過物件來呼叫,而不能通過類名來呼叫。

  3.當this關鍵字出現在例項方法中時,代表正在呼叫該方法的當前物件.

     當例項成員出現在例項方法中時,預設格式:this.成員變數

    當類成員變量出現在例項方法中時,預設格式:類名.成員變數

構造方法:

1.構造方法負責物件成員的初始化工作,為例項變數賦予合適的初始值,具有特殊的宣告規則.方法名和類名相同且沒有返回值。 一般用 new 構造方法名() 來建立該類的物件,構造方法是在物件一建立就 執行,給物件初始化。

   2.當this關鍵字出現在類的構造方法中時,代表使用該構造方法所建立的物件。

   3.程式設計師如果沒有在JAVA類中提供構造方法,系統則會自動提供一個無引數的構造方法,這個構造方                      法為空,不做任何事情。所以JAVA類中至少含有一個構造方法。

   什麼時候定義構造方法呢? 

   當分析食物時,該事物存在就具備一些特性或者行為,那麼將這些內容定義在構造方法中

public class ConstructorTest
{
       public String name;
       public int age;
       public ConstructorTest(String name , int age)    //提供自定義的構造方法,構造器包含兩個引數
     {
            //構造方法中的this代表它進行初始化的物件
            this.name=name;
            this.age=age;        //這兩行程式碼將傳入的2個引數賦給this代表物件的name和age例項變數
     }
     public static void main(String[] args)
     {
             //使用自定義的構造方法來建立物件
             //系統將對物件執行自定義的初始化
             ConstructorTest tc = new ConstructorTest("張三",23);     //物件一建立,就會呼叫與之對應的建構函式
             System.out.println(tc.name);
             System.out.println(tc.age);
     }
}

例子

public class Test{
public static void myMethod();//類方法
public void myMethod2();//例項方法
public Test(){}//構造方法,沒有返回值,方法名與類名一樣
}

this關鍵字:

person(String name)
{
        this.name = name;
}

this:看上去,是用於區分區域性變數和成員變數同名情況。

this為什麼可以解決這個問題呢?

this到底代表的是什麼?

this:就代表本類的物件,到底代表哪一個呢?

         this代表它所在函式所屬物件的引用。

         簡單說:哪個物件在呼叫this所在的函式,this就代表哪個物件

this的應用:當定義類中功能時,該函式內部要用到呼叫該函式的物件時,這時用this來表示這個物件。

class a
{
        person(String name)
       {
               this.name = name;
       }

       public void speak()
       {
            System.out.println("name="+name"...age"+age);  //System.out.println("name="+this.name"...age"+this.age)
       }
}

calss PersonDemo
{
         public static void main(String[] args)
         {
            person p =new person;
            person p1 = new person;
            p.speak();
            p1.speak();
         }
}
this語句:用於建構函式之間進行相互呼叫,不用用在一般函式中。

this語句只能定義在建構函式的第一行。因為初始化要先執行。