1. 程式人生 > 其它 >Day11-封裝-繼承-多型

Day11-封裝-繼承-多型

簡單小結


封裝

  • 高內聚,低耦合

    高內聚就是類的內部資料操作細節自己完成,不允許外部干涉。

    低耦合暴露少量的方法給外部使用。

  • 封裝:禁止直接訪問一個物件中的資料實際表示,而應通過介面來訪問,這稱為資訊隱藏(就是把一個數據放到上鎖的盒子裡儲存,然後通過鑰匙來開啟訪問)

  • 屬性私有: get/set

  1. Student類



public class Student {
     //屬性私有
     private String name;
     private int id;
     private int age;
 ​
     //提供方法訪問,get/set
     //get方法獲取封裝的資料
     public String getName(){
         return this.name;
     }
     //set方法設定數值
     public void  setName(String name){
         this.name = name;
 ​
     }
 ​
     public int getAge() {
         return age;
     }
 ​
     public void setAge(int age) {
         this.age = age;
     }
 ​
     public int getId() {
         return id;
     }
 ​
     public void setId(int id) {
         if (id !=0) {
             this.id = id;
         } else {
             this.id = -1;
 ​
         }
     }
 }//  get/set可通過alt+insert快捷輸入

  

  1. 應用類



public class Application {
     public static void main(String[] args) {
         Student s1 = new Student();
         s1.setName("張三");
         System.out.println(s1.getName());
         s1.setId(012131);
         System.out.println(s1.getId());
     }
 }

  


繼承

  • 繼承本質就是對某一批類的抽象

  • 繼承在java中只有單繼承

  • 在java中,所有的類都是直接或間接繼承 object類

  • 繼承了父類所有的沒有被私有的方法(只是方法)

  1. Person父類

 public class Person {
     public String Name;
     public int age;
     private int money = 1_0000_0000;
 ​
     public int getMoney() {
         return money;
     }
 ​
     public void setMoney(int money) {
         this.money = money;
     }
     public void say(){
         System.out.println("我是fw");
     }
 }

  

  1. Student子類(繼承父類所有方法)



public class Student extends Person {
 ​
 }

  

  1. 應用類

 public class Application {
     public static void main(String[] args) {
         Student s1 = new Student();
         System.out.println(s1.getMoney());
         s1.say();
     }
 }
 //輸出結果
 100000000
 我是fw

  

  • super

  1. super呼叫父類的構造方法,而且還要在構造方法的第一個

  2. 只能出現在子類或構造方法中

  3. super和this不能同時呼叫構造方法,不能同時出現

  • this

  1. this表示本類的物件,而super的是父類

  2. this沒繼承也可用,而super需要繼承

  3. this(); 本類的構造

    super(); 父類的構造


方法重寫

  • 重寫都是方法的重寫,和屬性無關

  • 方法名相同,引數列表相同

  • 修飾符:範圍可以擴大但不能縮小 public>protected>default>private

  • 丟擲的異常:範圍可以被縮小但不能擴大: ClassNotFoundException -->Exception(大)、

  • 靜態方法的重寫是跟左邊的物件,而非靜態的方法重寫就是子類重寫了父類的方法

重寫是因為父類的功能子類不一定需要,或者子類需要的功能父類沒有


多型

  • 多型是方法的多型

  • 父類和子類,有聯絡,型別轉換異常 ClassCastExceotion

  • 存在條件:有繼承關係,方法需要重寫,父類引用子類物件 Father f1 = new Son();

  • static 方法屬於類,他不屬於例項、final是常量、private方法都不能多型