Vue3.0網頁版聊天|Vue3.x+ElementPlus仿微信/QQ介面|vue3聊天例項
初識面向物件
對於描述複雜的事物,為了從巨集觀上把握、從整體上合理分析,我們需要使用面向物件的思路來分析整個系統。但是,具體到微觀操作,仍然需要面向物件的思路去處理。
什麼是面向物件
-
本質就是: 以類的方式組織程式碼,以物件的組織(封裝)資料。
-
-
三大特徵
封裝
繼承
多型
方法回顧和加深
回顧方法的定義
package oop;
public class Demo01 {
//main方法
public static void main(String[] args) {
}
/*
修飾符 返回值型別 方法名(···){
// 方法體
return 返回值;
}
*/
public String sayHello(){
return "Hello";
}
}
回顧方法的呼叫
-
靜態方法 static
和類一起載入的
-
非靜態方法
-
例項化之後才存在
例項化
Student student = new Student();
// 物件型別 物件名 = 物件值;
物件的建立分析
類與物件的關係
-
類是一種抽象的資料型別,它是對某一類事物整體描述/定義,但是並不能代表一個具體的事物
-
物件是抽象概念的具體例項
建立與初始化物件
-
使用new 關鍵字建立物件
構造器(構造方法)
在進行建立物件的時候必須要呼叫的,並且構造器有以下兩個特點
-
必須和類的名字相同
-
必須沒有返回型別,也不能寫void
使用new的時候必須有構造器
有參構造
-
一但定義了有參構造,如果使用無參構造必須顯示定義
Alt + Insert 生成構造器
記憶體分析
小結
-
類與物件
類是一個模板:抽象;物件是一個具體的例項
-
方法
定義,呼叫
-
物件的引用
引用型別
物件是通過引用來操作的
-
屬性
欄位Field 成員變數
預設初始化
-
物件的建立和使用
必須使用new關鍵字建立物件,構造器
Preson person = new Person();
person.name;//物件的使用
person.sleep;//物件的方法
面向物件的三大特徵
封裝
-
該露的露,該藏得藏
高內聚(類的內部資料操作細節自己完成),低耦合(僅暴漏少量的方法給外部使用)
-
屬性私有
paivate 屬性私有
-
get /set
提供一些public 的 get set方法
Alt + insert
繼承
-
繼承的本質是對某一批類的抽象,從而實現對現實世界更好的建模。
-
extends 的意思是“擴充套件”。子類是父類的擴充套件
-
JAVA中類只有單繼承,沒有多繼承
-
繼承是類和類之間的一種關係。除此之外,類和類之間的關係還有依賴、組合、聚合等。
-
繼承關係的兩個類,一個為子類,一個為父類。子類繼承父類,使用關鍵字extends來表示
-
子類和父類之間,從意義上講應該具有“is a”的關係
-
-
Ctrl + H
-
在Java中所有的類就預設直接或間接繼承Object類
super
-
super呼叫父類的構造方法,必須在構造方法的第一個
-
super必須只能出現在子類的方法或者構造方法中
-
super 和 this 不能同時呼叫構造方法
Vs this
-
代表物件不同
-
this : 本身呼叫者這個物件
-
super : 代表父類的應用
-
-
前提
-
this : 沒有繼承也可以使用
-
super :只能在繼承條件下才可以使用
-
-
構造方法
-
this(); 本類的構造
-
super();父類的構造
-
方法重寫(需要有繼承關係,子類重寫父類的方法)
-
方法名必須相同
-
引數列表必須相同
-
修飾符範圍可以擴大,不能縮小 public>Protected>Default>private
-
丟擲的異常範圍可以被縮小,但不能擴大
父類的功能,子類不一定需要,或者不一定滿足
多型
-
多型是方法的多型,屬性沒有多型
-
父類和子類有聯絡,型別轉換異常 ClassCastException
-
存在條件 :繼承關係,子類需要重寫,父類引用指向子類物件
static final private修飾的不能被重寫
instanceof 判斷兩個類之間是否有父子關係
Object object = new Person();
Object instanceof Person
// Object 與 Person有父子關係可以編譯執行
// Person 與 Person 有父子關係返回sure
強制轉換
(子類)名字;//強制轉換為子類型別
-
父類引用指向子類的物件
-
把子類轉換為父類,向上轉型
-
如果想把父類轉化為子類 ; 向下轉型。強制轉換
-
方便方法的呼叫,減少重複的程式碼
static
https://www.bilibili.com/video/BV12J41137hu?p=73
抽象類和介面
抽象類
-
abstract 修飾
-
抽象類的所有方法,自稱了它的子類,都必須實現他的方法
-
不能new 抽象類,只能子類去實現
-
抽象方法必須在抽象類中,抽象類中可以寫普通方法
介面
只有規範,自己無法寫方法
介面的本質是契約
可以利用介面實現多繼承
定義的方法都是public static類
定義的常量都是public static final
作用
-
約束繼承的子類
-
定義一些方法,讓不同的人實現
-
介面不能直接被例項化
-
implements可以實現多個繼承
-
必須重寫介面中的方法
內部類及OOP實戰
內部類
。。。