物件導向的三大特性:封裝,繼承,多型
封裝: 物件的便捷對物件的內部起到保護作用:
資料隱藏(四種訪問修飾符)
public公開 可以繼承
default本類和同包可以訪問 如果乙個屬性既不是public也不是private 那就預設是default 同包的子類可以繼承
private私有 只能在本類內部訪問 無法突破邊界 不能繼承
protected受保護的 本類+同包+不同包的子類都可以訪問 可以繼承
private protected 只能修飾屬性、方法、構造方法
default public 可以修飾屬性、方法、構造方法、類
構造方法不能繼承!
方法的覆蓋
子類用特殊的方法實現替換掉父類繼承給它的一般的方法實現
(也就是說計算機在子類中找到了需要呼叫的方法,就不用去呼叫父類的方法了)
父類的靜態方法(static)不能被子類覆蓋
注意:子類替換父類的方法的時候,不能改變父類構造方法的返回值型別,方法名,參數列,訪問修飾符相同或更寬
屬性私有 提供公開的set***/get***用來訪問屬性
字串名.length() 字串長度
方法私有 只給自己呼叫
方法公開 宣告公開(你只需要知道能做什麼) 實現隱藏(不需要知道怎麼實現的)
實現的改變對架構的影響最小
《左移一位 乘2 >>右移一位 除2
繼承:
父類:子類的共性抽象出來的 比如動物是貓狗雞鴨魚鳥等的父類
class b{}
class a extends b{} a是b的子類
只有子類能夠訪問到的父類的屬性和方法,才算是子類繼承的
繼承的作用:
1.使**可重用,大大減少了寫重複**的次數
2.增強程式的可擴充套件性
3.增強程式的可維護性
4.使人們能夠更加清晰的看清楚各個物件之間的聯絡
物件的構造過程
1.分配空間 本類+父類 一併分配
2.遞迴的構造父類物件()
3.初始化本類屬性
4.呼叫本類構造方法
例如a<–b<–c
建立c物件:
如果第一次(建立物件 || 訪問類的靜態成員 || 載入子類)需要類載入(只會執行一次)
(1)載入父類a 執行a的靜態**塊
(2)載入父類b 執行b的靜態**塊
(3)載入子類c 執行c的靜態**塊
1.分配空間
2.初始化a屬性和a的初始**塊(動態**塊)
3.呼叫a的構造方法
4.初始化b屬性和b的初始**塊(動態**塊)
5.呼叫b的構造方法
6.初始化c屬性和c的出事**塊(動態**塊)
7.呼叫c的構造方法
super
1.引用:父類物件
訪問父類被遮蓋的屬性或呼叫被覆蓋的方法
2.用在構造方法中 指定呼叫父類的哪乙個構造方法
必須是構造方法中的第乙個語句
如果乙個構造方法的第一句話,不是this(…),也不是super(…),系統預設新增super();
常常用來把構造引數傳給父類,去設定父類的屬性!
三大特性 封裝,繼承,多型
重寫方法的規則 1 引數列表必須完全與被重寫的方法相同,否則不能稱其為重寫而是過載。2 返回的型別必須一直與被重寫的方法的返回型別相同,否則不能稱其為重寫而是過載。3 訪問修飾符的限制一定要大於被重寫方法的訪問修飾符 public protected default private 4 重寫方法一定...
Java三大特性 封裝,繼承,多型
封裝的作用 1 封裝能夠減少耦合 2 類內部結構可以自由修改 3 對成員變數進行更精確的控制 例項 public class person在上面這段 中,把屬性定義成private私有的,只能在本類中訪問,其他類訪問不了。public class person public string getna...
java三大特性 封裝,繼承,多型
使用封裝有三大好處 1 良好的封裝能夠減少耦合。2 類內部的結構可以自由修改。3 可以對成員進行更精確的控制。4 隱藏資訊,實現細節。5 封裝我們也能夠對物件的出口做出很好的控制,訪問入口做一些控制 如對實體類進行屬性封裝方法 setter 和getter 同時在使用繼承時需要記住三句話 1 子類擁...