1. 程式人生 > >Java(13) 抽象和封裝

Java(13) 抽象和封裝

技術分享 int ack 封裝 現實 關鍵詞 ide 修改 mce

一、簡述從現實世界中抽象出類的步驟

  第一:找出分類(分析出類)
  第二:找出類的特征(分析類的相關屬性)
  第三:找出類的行為(分析類的方法)

二、常量(經常出現的變量值)

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) 抽象和封裝