Day11-封裝-繼承-多型
阿新 • • 發佈:2021-07-11
-
高內聚,低耦合
高內聚就是類的內部資料操作細節自己完成,不允許外部干涉。
低耦合暴露少量的方法給外部使用。
-
封裝:禁止直接訪問一個物件中的資料實際表示,而應通過介面來訪問,這稱為資訊隱藏(就是把一個數據放到上鎖的盒子裡儲存,然後通過鑰匙來開啟訪問)
-
屬性私有: get/set
-
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快捷輸入
-
應用類
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類
-
繼承了父類所有的沒有被私有的方法(只是方法)
-
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"); } }
-
Student子類(繼承父類所有方法)
public class Student extends Person { }
-
應用類
public class Application { public static void main(String[] args) { Student s1 = new Student(); System.out.println(s1.getMoney()); s1.say(); } } //輸出結果 100000000 我是fw
-
super
-
super呼叫父類的構造方法,而且還要在構造方法的第一個
-
只能出現在子類或構造方法中
-
super和this不能同時呼叫構造方法,不能同時出現
-
this
-
this表示本類的物件,而super的是父類
-
this沒繼承也可用,而super需要繼承
-
this(); 本類的構造
super(); 父類的構造
方法重寫
-
重寫都是方法的重寫,和屬性無關
-
方法名相同,引數列表相同
-
修飾符:範圍可以擴大但不能縮小 public>protected>default>private
-
丟擲的異常:範圍可以被縮小但不能擴大: ClassNotFoundException -->Exception(大)、
-
靜態方法的重寫是跟左邊的物件,而非靜態的方法重寫就是子類重寫了父類的方法
重寫是因為父類的功能子類不一定需要,或者子類需要的功能父類沒有
多型
-
多型是方法的多型
-
父類和子類,有聯絡,型別轉換異常 ClassCastExceotion
-
存在條件:有繼承關係,方法需要重寫,父類引用子類物件 Father f1 = new Son();
-
static 方法屬於類,他不屬於例項、final是常量、private方法都不能多型