1. 程式人生 > >Java中多型、抽象類和介面

Java中多型、抽象類和介面

1:final關鍵字(掌握)
(1)是最終的意思,可以修飾類,方法,變數。
(2)特點:
A:它修飾的類,不能被繼承。
B:它修飾的方法,不能被重寫。
C:它修飾的變數,是一個常量。
(3)面試相關:
A:區域性變數
a:基本型別 值不能發生改變
b:引用型別 地址值不能發生改變,但是物件的內容是可以改變的
B:初始化時機
a:只能初始化一次。
b:常見的給值
定義的時候。(推薦)
構造方法中。

2:多型(掌握)
(1)同一個物件在不同時刻體現出來的不同狀態。
(2)多型的前提:
A:有繼承或者實現關係。
B:有方法重寫。
C:有父類或者父介面引用指向子類物件。


多型的分類:
a:具體類多型
class Fu {}
class Zi extends Fu {}

Fu f = new Zi();
b:抽象類多型
abstract class Fu {}
class Zi extends Fu {}

Fu f = new Zi();
c:介面多型
interface Fu {}
class Zi implements Fu {}

Fu f = new Zi();
(3)多型中的成員訪問特點
A:成員變數
編譯看左邊,執行看左邊
B:構造方法
子類的構造都會預設訪問父類構造
C:成員方法

編譯看左邊,執行看右邊
D:靜態方法
編譯看左邊,執行看左邊

為什麼?
因為成員方法有重寫。
(4)多型的好處:
A:提高程式碼的維護性(繼承體現)
B:提高程式碼的擴充套件性(多型體現)
(5)多型的弊端:
父不能使用子的特有功能。

現象:
子可以當作父使用,父不能當作子使用。
(6)多型中的轉型
A:向上轉型
從子到父
B:向下轉型
從父到子
(7)孔子裝爹的案例幫助大家理解多型
(8)多型的練習
A:貓狗案例
B:老師和學生案例
3:抽象類(掌握)
(1)把多個共性的東西提取到一個類中,這是繼承的做法。
但是呢,這多個共性的東西,在有些時候,方法的宣告一樣,但方法體不一樣。

也就是說,方法宣告一樣,但是每個具體的物件在具體實現的時候內容不一樣。
所以,我們在定義這些共性的方法的時候,就不能給出具體的方法體。
而一個沒有具體的方法體的方法是抽象的方法。
在一個類中如果有抽象方法,該類必須定義為抽象類。
(2)抽象類的特點
A:抽象類和抽象方法必須用關鍵字abstract修飾
B:抽象類中不一定有抽象方法,但是有抽象方法的類一定是抽象類
C:抽象類不能例項化
D:抽象類的子類
a:是一個抽象類。
b:是一個具體類。這個類必須重寫抽象類中的所有抽象方法。
(3)抽象類的成員特點:
A:成員變數
有變數,有常量
B:構造方法
有構造方法
C:成員方法
有抽象,有非抽象
(4)抽象類的練習
A:貓狗案例練習
B:老師案例練習
C:學生案例練習
D:員工案例練習
(5)抽象類的幾個小問題
A:抽象類有構造方法,不能例項化,那麼構造方法有什麼用?
用於子類訪問父類資料的初始化
B:一個類如果沒有抽象方法,卻定義為了抽象類,有什麼用?
為了不讓建立物件
C:abstract不能和哪些關鍵字共存
a:final 衝突
b:private 衝突
c:static 無意義
4:介面(掌握)
(1)回顧貓狗案例,它們僅僅提供一些基本功能。
比如:貓鑽火圈,狗跳高等功能,不是動物本身就具備的,
是在後面的培養中訓練出來的,這種額外的功能,java提供了介面表示。
(2)介面的特點:
A:介面用關鍵字interface修飾
interface 介面名 {}
B:類實現介面用implements修飾
class 類名 implements 介面名 {}
C:介面不能例項化
D:介面的實現類
a:可以是一個抽象類。
b:可以是一個具體類,這個類必須重寫介面中的所有抽象方法。
(3)介面的成員特點:
A:成員變數
只能是常量
預設修飾符:public static final
B:構造方法
沒有構造方法
C:成員方法
只能是抽象的
預設修飾符:public abstract
(4)類與類,類與介面,介面與介面
A:類與類
繼承關係,只能單繼承,可以多層繼承
B:類與介面
實現關係,可以單實現,也可以多實現。
還可以在繼承一個類的同時,實現多個介面
C:介面與介面(重點)
繼承關係,可以單繼承,也可以多繼承
(5)抽象類和介面的區別(自己補齊)?
A:成員區別
抽象類:可以是變數,也可以是常量;有抽象方法也有非常像方法。
介面:常量;只能是抽象方法。
B:關係區別:
類與類:繼承關係,可以單實現,可以多層實現
類與介面:實現關係,可以單實現,也可以多實現。可以在繼承一個類的同時繼承多個介面。
介面與介面:繼承關係,可以單繼承,也可以多繼承。
C:設計理念不同
抽象類:is a,抽象類中定義的是共性功能。
介面:like a,介面中定義的是擴充套件功能。
(6)練習:
A:貓狗案例,加入跳高功能
B:老師和學生案例,加入抽菸功能0

相關推薦

Java抽象介面

1:final關鍵字(掌握) (1)是最終的意思,可以修飾類,方法,變數。 (2)特點: A:它修飾的類,不能被繼承。 B:它修飾的方法,不能被重寫。 C:它修飾的變數,是一個常量。 (3)面試相關: A:區域性變數 a:基本型別 值不能發生改變 b:引用型別

JAVA基礎複習(三)繼承抽象介面

1、超類也稱為父類或者基類,次類又稱為子類或者拓展類、派生類。子類從它的父類中繼承可訪問的資料域和方法,還可以新增新資料域和新方法。 2、繼承:子類並不是父類的一個子集,子類比它的父類包含更多的資訊和方法;父類中的私有資料域在該類之外是不可訪問的;不是所有是一種關係都應該用繼承來建模,但是繼承是

Java 009 面向物件(抽象介面

知識點梳理 心得體會 小知識點 1.多型中成員訪問特點:成員方法看左右,子類都會先訪問父類構造方法(先初始化父類成員才能被子類呼叫),其他只看左邊 2.多型缺點:不能使用子類特有功能,解決辦法有兩種:一、建立子類物件調方法(不合理且佔記憶體)二、向下轉型:Zi z=(Zi)

Java 知識點整理-3.面向物件(抽象介面

1、多型概述:事物存在的多種形態。 2、多型前提:要有繼承關係;要有方法重寫;要有父類引用指向子類物件(父類名 識別符號 = new 子類名();)。 3、多型中的成員訪問特點:Ⅰ.成員變數:編譯看左邊(父類),執行看左邊(父類)。 4、多型中的成員訪問特點:Ⅱ.成員方法:編譯看左邊(父

Java面向物件筆記(封裝繼承抽象介面

面向物件的思想在現實生活中很常見,例如專案開發,老闆想要實現某個功能,但是他自己不會這些技術,所以他就會讓員工去做這些事情,通過藉助別的擁有你想要實現某些功能的過程就可以理解為面向物件。 面向物件有三大特性:封裝、繼承、多型。 1.封裝:即是把函式或者工具類的實

java第九天---抽象介面各種修飾符的作用及應用場景內部類

1   什麼叫多型     某一個事物,在不同時刻表現出來的不同狀態。貓可以是貓的型別。貓 m = new 貓();  同時貓也是動物的一種,也可以把貓稱為動物。動物 d = new 貓(); 2   多型的前提    

抽象介面

多型、抽象類、介面 多型 多型程式碼演示 父類 public class Fu { int i=199; public Fu() { System.out.println("我是父類構造方法"); } public void

C++技術——抽象

一 多型相關知識點 1. 用基類的指標 或引用操縱多個型別 的能力被稱為多型,繼承, 得到派生類的指標或引用給父類, 父類有虛擬函式。 2.實現過程是: 用基類的指標類指向派生類的地址,在呼叫虛擬函式(因為呼叫虛擬函式是通  過查虛表執行函式的,但虛表中的虛擬函式指標可以在繼承的時候被

java繼承,抽象介面的理解

在java中,一切都是面向物件的。為了更為清晰的表示出兩個物件的關係,以及克服程式碼的冗餘,引入了繼承,多型,抽象類,介面等機制。我認為: 1.繼承是兩個物件間最為普遍也最容易表示的關係,同時繼承也很好的保持了父類物件的特性,使程式使用更為簡單易讀; 2.在多型中,用一個父

09 面向物件_&抽象&介面

09.01_面向物件(多型的概述及其程式碼體現) A:多型(polymorphic)概述 事物存在的多種形態 B:多型前提 a:要有繼承關係。 b:要有方法重寫。 c:要有父類引用指向子類物件。

Java基礎5——深入理解抽象介面

抽象類和介面 抽象方法和抽象類   抽象方法是一種特殊的方法:它只有宣告,而沒有具體的實現。抽象方法的宣告格式為: abstract void f();   《Java程式設計思想》一書中將抽象類定義為包含抽象方法的類,但準確來說,包含抽象方法的類一定是抽象類,但抽象類不

繼承與抽象介面

繼承關鍵字 extends 子類extends基類 重寫(覆蓋):子類和基類中方法和引數列表都相同 編譯期----靜態聯編    執行期-----動態聯編 多型發生在執行期,當基類為抽象類,子類為實現抽象類的重寫方法時,基類物件呼叫子類中該抽象類的重寫方法時,就會產生多型

java單例模式包抽象介面

1:類修飾符: public(訪問控制符),將一個類宣告為公共類,他可以被任何物件訪問,一個程式的主類必須是公共類。 abstract,將一個類宣告為抽象類,沒有實現的方法,需要子類提供方法實現。 final,將一個類生命為最終(即非繼承類),表示他不能被其他類繼承。 friendly,預設的修飾

Java核心知識三】抽象介面

介面和內部類為我們提供了一種將介面和實現分離的更加結構化的方法 抽象類和抽象方法 抽象方法:不完整,僅有申明而沒有方法體。 abstract void f(); 抽象類: 包

Java物件例項的關係Java資料封裝Java繼承Java抽象介面Java靜態欄位方法Java作用域Java的classpathjarJava核心

Java物件和例項的關係: 面向物件程式設計(Object-Oriented Programming),是對現實世界建立計算機模型的一種方法。 class是物件的模板,它定義瞭如何建立例項,class的名字就是資料型別。一個class裡可以有多個欄位(field),欄位用

Java學習日常(包裝final修飾符抽象

學習內容 多型中的instanceof運算子 public class Client1 { public static void main(String[] args) { Animal tom = new Dog(); Anim

Python全棧學習筆記day 25:抽象介面鴨子型別

一、介面類 python中沒有介面類 : python中自帶多繼承 所以我們直接用class來實現了介面類 抽象類、介面類 : 都是面向物件的開發規範 所有的介面類和抽象類都不能例項化 介面類 : python原生不支援 抽象類 : python原生支援的 栗子: c

java的成員變數方法呼叫問題

class Super { String name = "父類名字"; public void setName(String name) { System.out.println(this.getClass());

Object JDK常用封裝

事物 引用 null static 包裝 變化 end number demo 多態 定義:某一類事物的多種存在形態。 多態的體現:父類的引用指向了自己的子類對象。父類的引用也可以接收自己的子類對象。 多態的前提:必須是類與類之間有關系,要麽繼承,要麽實現。通常還有一個前提

Java抽象介面的對比分析

abstract class在Java語言中表示的是一種繼承關係,一個類只能使用一次繼承關係。但是,一個類卻可以實現多個interface。 在abstract class中可以有自己的資料成員,也可以有非abstarct的成員方法,而在interface中,只能夠有靜態的