Java(13) 抽象和封裝
一、簡述從現實世界中抽象出類的步驟
第一:找出分類(分析出類)
第二:找出類的特征(分析類的相關屬性)
第三:找出類的行為(分析類的方法)
二、常量(經常出現的變量值)
2.1 語法:
public static final 數據類型 常量名 = 常量值;
註意:1.final最終的,修飾的變量不能被修改
2.變量名的所有字母都大寫,多個單詞用下劃線(_)分割,
例如:public static final String SEX_MALE ="Q仔";
常量的訪問式:類名.常量名
示例:
1 public class Example1 { 2 String name = "無名氏";//企鵝類昵稱 3 int health =100;//健康值 4 int love = 0;//親密度 5 public static final String SEX_MALE= "雌"; 6 public static final String SEX_FEMALE = "雄"; 7 String sex = SEX_MALE;//性別 8 public void ji(){ 9 System.out.println("寵物的自白:\n我的名字叫"+this.name+",健康值是"+this.health 10 +",和主人的親密度是"+this.love+",我是一只"+this.sex+"。"); 11 } 12 }
1 public class Text1 { 2 public static void main(String[] args){ 3 Example4 qi = new Example4(); 4 System.out.println("第一個企鵝的性別是:"+qi.sex); 5 qi = new Example4(); 6 qi.sex =qi.SEX_FEMALE; 7 System.out.println("第二個企鵝的性別是:"+qi.sex);測試類8 qi = new Example4(); 9 qi.sex =qi.SEX_MALE; 10 System.out.println("第三個企鵝的性別是:"+qi.sex); 11 } 12 }
運行結果為:
三.構造方法(特殊方法,用來創建對象,初始化值)
3.1 語法:
public 類名( 參數列表){
//方法體
}
a.使用
類名 對象名 = new 構造方法名(參數);
Dog d = new Dog();
b.與一般方法的區別
1,構造方法沒有返回值類型;
2,構造方法的方法名就是類名,一般方法可以任意取
3,構造方法調用:new 構造方法名(參數);
一般方法調用:對象名.方法名(參數);
c.構造方法的作用
1,創建方法對象
2,初始化值(屬性值);
註意:當你沒有寫構造函數時,java會提供默認的無參構造函數
例如:public Dog(){
}
示例2:
1 public class Example2{ 2 String name = "無名氏";//昵稱 3 int health =100;//健康值 4 int love = 0;//親密度 5 String sex = "Q仔";//性別 6 public Example6(){ 7 name = "楠楠"; 8 love =20; 9 sex = "Q妹"; 10 System.out.println("執行構造方法"); 11 } 12 public void ji(){ 13 System.out.println("寵物的自白:\n我的名字叫"+this.name+",健康值是"+this.health 14 +",和主人的親密度是"+this.love+",我是一只"+this.sex+"。"); 15 } 16 public static void main(String[] args){ 17 Example6 qi = null; 18 qi = new Example6(); 19 qi.ji(); 20 } 21 }無參構造方法
運行結果為:
四、方法重載
方法名一樣,參數列表不一樣
註意:重載與返回值了類型和訪問修飾符無關
1 public class Example8 { 2 String name = "無名氏";//昵稱 3 int health =100;//健康值 4 int love = 0;//親密度 5 String sex = "Q仔";//性別 6 public Example8(){ 7 name = "楠楠"; 8 love =20; 9 sex = "Q妹"; 10 System.out.println("執行構造方法"); 11 } 12 //兩個參數的構造方法 13 public Example8(String name,String sex){ 14 this.name = name; 15 this.sex = sex; 16 } 17 public Example8(String name,int health,int love,String sex){ 18 this.name = name; 19 this.health= health; 20 this.love = love; 21 this.sex = sex; 22 } 23 public void ji(){ 24 System.out.println("寵物的自白:\n我的名字叫"+this.name+",健康值是"+this.health 25 +",和主人的親密度是"+this.love+",我是一只"+this.sex+"。"); 26 } 27 public static void main(String[] args){ 28 Example8 qi = null; 29 qi = new Example8(); 30 qi.ji(); 31 qi = new Example8("丫丫","企鵝"); 32 qi.ji(); 33 qi = new Example8("妹妹",80,20,"Q仔"); 34 qi.ji(); 35 } 36 }方法重載
運行結果為:
六、封裝
6.1 作用:隱藏類不實現細節;
6.2 步驟:
1.采用了private修飾符的變量不能在類外部訪問,而通過public修飾的set和get方法訪問
2.在set方法中編寫相應存取控制語句可以避免出現不符合實際需求的賦值
將屬性均設為private權限,這樣的屬性只在類內可見,
用public權限的ste方法和get方法實現對屬性的存取。
在set方法中對輸入的屬性值的範圍進行判斷,簡單說,指定某一事物的值並要進行判斷的時候用set
6.3 this關鍵詞
this:表示當前對象
調用屬性:this.屬性名
調用方法:this.方法名();
this():表示調用構造函數。
註意:this(),必需寫在構造函數的第一行。
Java(13) 抽象和封裝