Java入門——(2)面對對象(上)

來源:互聯網
上載者:User

標籤:特徵   code   針對   java入門   檢查   long   核心   單例   其他   

 關鍵詞:面對對象、類、、構造方法、this、static、內部類 一、面對對象的概念:把解決的問題安裝一定規則劃分為多個獨立的對象,然後通過調用對象的方法來解決問題。其特點可概括為封裝性、繼承性、多態性。    1、封裝性:面對對象的核心,將對象的屬性和行為封裝起來,不需要讓外界知道具體實現細節,這就是封裝思想。    2、繼承性:主要描述的是類與類之間的關係,通過繼承,可以在無需重新編寫原有類的情況下,對原有類的功能進行擴充。    3、多態性:是在程式中允許出現重名現象,它指在一個類中定義的屬性和方法被其他類繼承後,他們可以具有不同的資料類型或表現出不同的行為,這使得同一個屬性和方法在不同的類中具有不同的語義。二、類與對象     1、類是對象的抽象,它用於描述一組對象的共同特徵和行為。類中可以定義成員變數和成員方法,其中成員變數用於描述對象的特徵,也稱作屬性,成員方法用於描述對象的行為,可簡稱方法。         如何建立類:
1 class Person{2      //定義int 類型的變數3       int age;4      //定義speak()方法5       void speak (){6             System.out.println(“***”)7       }8 } //Person 類名,age 是成員變數,speak()成員方法
2、對象的建立與使用:     建立:類名 對象名= new 類名();//執行個體對象     使用: 對象引用.對象成員;     執行個體化對象時,Java虛擬機器會自動為成員變數進行初始化,針對不同類型的成員變數,賦予不同的初始值。
表:成員變數的初始值
成員變數類 初始值 成員變數類 初始值
    byte   0 double 0.0D
short 0 char Null 字元,‘\u0000‘
int 0 boolean false
long  0L 引用資料類型 null
float 0.0F    
在Java中,null是一種特殊的常量,當一個變數的值為null時,則表示該變數不指向任何一個對象,變成垃圾被回收。  3、所謂的類的封裝是指定義一個類時,將類中的屬性私人化,即利用private 關鍵字來修飾,私人屬性只能在它所在類中被訪問。為了能讓外界訪問私人屬性,需要提供一些使用public 修飾的公用方法,其中包括用於獲得屬性值得getXXX()方法和設定屬性值得setXXX()方法。 
 1 class Student{ 2     private String name;    //將name屬性私人化 3     private int age;        //將age屬性私人化 4     //下面是公有的getXXX()和setXXX()方法 5     public String getName (){ 6         return name; 7     } 8     public void setName(String stuName){ 9         name = stuName ;10  }11 public int getAge (){12 return age ;13  }14 public void setAge(int stuAge){15 //下面是對傳入的參數進行檢查16 if(stuAge<=0){17 System.out.println("年齡不合法");18 }else {19 age = stuAge ; //對屬性賦值20  }21  }22 public void introduce(){23 System.out.println("大家好,我叫"+name+",我今年"+age+"歲!");24  }25 }26 public class Example01{27 public static void main(String[] args){28 Student stu = new Student();29 stu.setAge(-30);30 stu.setName("李芳");31  stu.introduce();32  }33 }
 三、構造方法1、構造方法:構造方法是類中一個特殊成員,它會在執行個體化對象時被自動調用。2、構造方法的特點: ①方法名與類名相同;

 ②在方法名前面沒有傳回值類型的聲明;

 ③在方法中不能使用return語句返回一個值;

 1 class Person{ 2       //構造方法 3      public Person(){ 4           //無參構造方法 5       } 6      public Person(int age){ 7           age = a;   //有參構造方法 8      } 9      public void speak(){10 System.out.println(“I am” +age+”years old !");11  }12 }13 public class Example{14 public static void main (String [] args){15 Person p = new Person(20); //執行個體化Person對象16  p.speak();17  }18 }

 

3、構造方法的重載:與普通方法一樣,方法名相同,只需要參數類型或參數個數不同即可。     一般情況下,構造方法通常會使用public來修飾。  四、this 關鍵字1、this關鍵字三種常用方法:

①通過this關鍵字可以明確地訪問一個類的成員變數,解決與局部變數名稱衝突問題。

 1 class Person{ 2      int age ; 3      public Person(int age){ 4           this.age = age ;   //訪問成員變數 5      } 6      public int getAge(){ 7          return this .age; 8 } 9 }

②通過this關鍵字調用成員方法。

③構造方法是在執行個體化對象時被Java虛擬機器自動調用的,在程式中不能像調用其他方法一樣去調用構造方法,但可以在一個構造方法中使用“this(【參數1,參數2……】)”的形式來調用其他的構造方法。

注意點:

①只能在構造方法中使用this 調用其他的構造方法,不能在成員方法中使用。

②在構造方法中,使用this 調用構造方法的語句必須位於第一行,且只能出現一次。

③不能在一個類的兩個構造方法中使用this互相調用。

 五、static關鍵字1、使用static關鍵字來修飾成員變數,該變數被作靜態變數。靜態變數被所有執行個體共用,可以使用“類名.變數”的形式來訪問。    注意:static關鍵字只能用於修飾成員變數,不能用於修飾局部變數。2、靜態方法:在類中定義的方法前加上static關鍵字,可在不建立對象的情況下調用某方法。可使用“類名.方法名”的形式訪問。     注意:在一個靜態方法中只能訪問static修飾的成員,靜態方法在被調用時可以建立任何對象。3、靜態代碼塊:用static關鍵字修飾的代碼塊稱為靜態代碼塊,當類被載入時,靜態代碼塊會被執行,由於類只載入異常,因此靜態代碼塊只能執行一次。 4、單例模式:
 1 class Single{ 2      private static Single INSTANCE = new Single(); 3      private Single(){} 4      public static Single getInstance(){   5          return INSTANCE ;  6 } 7 } 8 //上面單例又可寫成以下形式 9 class Single{10 private Single(){}11 public static final Single INSTANCE = new Single();
/*變數名INSTANCE的前面有三個修飾符,其中,public的作用是允許外部直接存取該變數,static 的作用是 讓外部可以使用
“類名.變數名“的方式來訪問變數,final的作用是禁止外部對該變數進行修改。*/12 }13 14 class Example {15 public static void main(String[] args){16 Single s = Single.getInstance(); // getInstance()方法是獲得Single類執行個體對象的唯一途徑,Single 類是一個單例的類 17 }18 }
被關鍵字final修飾的變數為常量,其值不可變。 六、內部類:根據內部類的位置、修飾符和定義的方式可分為成員內部類、靜態內部類、方法內部類。1、建立內部類對象的具體文法格式:    外部類名.內部類名 變數名 = new 外部類名().new 內部類();
 1 class Outer{ 2     private int num = 4;              //定義類的成員變數 3     //下面的代碼定義了一個成員方法,方法中訪問內部類 4     public void test(){ 5         Inner inner = new Inner(); 6         inner.show(); 7     } 8     //下面的代碼定義了一個成員內部類 9     class Inner{10 void show(){11 //在成員內部類的方法中訪問外部類的成員變數12 System.out.println("num = "+num);13  }14  }15 }16 public class Example16 {17 public static void main(String[] args){18 Outer outer = new Outer(); //建立外部類對象19 outer.test(); //調用test()方法20  }21 }22 //直接建立內部類對象樣本23 public class Example16 {24 public static void main(String[] args){25 Outer.Inner inner = new Outer().Inner() ; //建立內部類對象26 inner.show(); //調用show()方法27  }28 }29 //當內部類被聲明為私人,外界將無法訪問。
2、建立靜態內部類對象的具體文法格式:     外部類名.內部類名 變數名 = new 外部類名.內部類名();
 1 class Outer{ 2     private static int num = 6;              //定義類的成員變數 3     //下面的代碼定義了一個靜態內部類 4     static class Inner{ 5         void show(){ 6             System.out.println("num = "+num); 7         } 8 } 9 }10 public class Example16 {11 public static void main(String[] args){12 Out.Inner inner = new Out.Inner(); //建立內部類對象13 inner.show(); //調用內部類的方法14 }15 }

     注意:①在靜態內部類中只能訪問外部類的靜態成員。

              ②在靜態內部類中可以定義靜態成員,而在非靜態內部類中不允許定義靜態成員。 3、方法內部類:是指在成員方法中定義的類,它只能在當前方法中被使用。方法內部類可以訪問外部類的成員變數。

Java入門——(2)面對對象(上)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.