1. 程式人生 > >抽象類,介面與其中最為關鍵的建構函式概念

抽象類,介面與其中最為關鍵的建構函式概念

抽象類是用來描述抽象行為的,比如Animal,我們不知道Animal具體有會有什麼樣的行為,只有具體的動物類,如Dog,Cat才有具體的行為,才能夠被例項化。抽象類是實現多型的一種機制,它可以包含具體方法(有具體實現的方法),也可以包含抽象方法,而繼承它的子類必須實現這些方法,下面總結了一下抽象類的特性:

  1. 抽象類不能被例項化,但可以有建構函式
  2. 抽象方法必須由子類進行重寫
  3. 只要包含一個抽象方法的類,就必須定義為抽象類,不管是否還包含其他方法
  4. 抽象類中可以包含具體的方法,也可以不包含抽象方法
  5. 抽象類可以包含普通成員變數,其訪問型別可以任意
  6. 抽象類也可以包含靜態成員變數,其訪問型別可以任意
  7. 子類中的抽象方法不能與父類的抽象方法同名
  8. abstract不能與private、static、final或native並列修飾同一個方法

下面通過一個例項類來說明抽象類的使用

// 抽象類Animal,包含了一個抽象方法cryabstract class Animal{
    public abstract void cry(); 
}

// 子類Dog繼承的抽象類Animal,必須實現其抽象方法cryclass Dog extends Animal{
    public void cry()
    {
        System.out.println("Dog cry");
    }
}
// 同樣,子類Cat繼承的抽象類Animal,必須實現其抽象方法cryclass Cat extends Animal{
    public void cry()
    {
        System.out.println("Cat cry");
    }
}

public class Test 
{
    public static void main(String[] args) {
        Animal a1 = new Dog();  // 抽象類引用指向子類例項
        Animal a2 = new Cat();

        a1.cry();
        a2.cry();
    }
}

輸出結果如下:

Dog cry
Cat cry

由輸出結果可以知道,使用a1,a2呼叫cry方法呼叫的是子類的cry方法,這是動態繫結,是實現多型的一種機制。



相關推薦

抽象介面其中最為關鍵建構函式概念

抽象類是用來描述抽象行為的,比如Animal,我們不知道Animal具體有會有什麼樣的行為,只有具體的動物類,如Dog,Cat才有具體的行為,才能夠被例項化。抽象類是實現多型的一種機制,它可以包含具體方法(有具體實現的方法),也可以包含抽象方法,而繼承它的子類必須實現這些方法,下面總結了一下抽象類的特性:

JAVA基礎之類抽象介面內部類

1.抽象類 抽象類往往用來表達對問題的抽象。 定義抽象類應該注意: (1)abstract是定義抽象類的關鍵字,放在class的前面。 (2)abstract在方法中宣告,則該方法則是抽象的方法,抽象方法是沒有方法體的,即為實現。 (3)一個抽象類可以可以包含多個抽象方法,也

Java基礎篇(三)--- 抽象介面final單目運算子

多型 ①父類引用指向子類: java允許父類的引用變數引用它的子類的例項(物件) Animal animal = new Cat(); 這種轉換是自動完成的 子類在一定條件下是可以轉換為父類的 ②繼承: 類的單繼承和介面的多繼承,都能體現多型 ③重寫、過載 過載:同一個類的同名函式(方法的引

JAVA學習---抽象介面

週日我們進一步學習了抽象類,介面,還好好分析了四種許可權修飾符的特性。 抽象類 定義: 我們先從一個例子引出抽象類的定義:比如我說一隻動物,你知道我說的是什麼具體動物嗎?只有看到了具體的動物,你才知道

11.8學習筆記(抽象介面

6.5 抽象類 抽象類屬於一個不完整的普通類,這種不完整的類必須舒勇abstract關鍵字進行宣告。同時在抽象類之中還可能包含有抽象方法,即那些只宣告而未實現的方法,所有的抽象方法沒有方法體,必須使用abstract關鍵字進行定義 abstract class

對java繼承多型抽象介面的理解

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

定義平面中的一個Circle類, 1編寫一個無引數建構函式, 2編寫一個有參的建構函式 3在主函式中呼叫無參建構函式生成圓的例項c1,呼叫有參建構函式生成圓的例項c2呼叫例項方法判斷c1和c2是否重

定義平面中的一個Circle類, 1編寫一個無引數建構函式, 2編寫一個有參的建構函式 3在主函式中呼叫無參建構函式生成圓的例項c1,呼叫有參建構函式生成圓的例項c2,呼叫例項方法判斷c1和c2是否重疊 class Point { double x; double y

介面抽象區別以及使用場景

順便做個記錄 介面和抽象類應該是Java語法中最常見的兩個概念 關於兩者,網上也是一搜一噸的對比,總體如下: 1,抽象類的成員可以具有訪問級別 介面的成員全部public級別 2,抽象類可以包含欄位 介面不可以 3,抽象類可以繼承介面 介面不能繼承抽象類

方法覆蓋方法過載介面抽象的區別

1:方法覆蓋(Overriding)和方法過載(Overloading)是什麼意思? 重寫和過載的區別? 答:Java中的方法過載發生在同一個類裡面兩個或者是多個方法的方法名相同但是引數不同的情況。與此相對,方法覆蓋是說子類重新定義了父類的方法。方法覆蓋必須有相同的方法名,

2017-9-23C#筆記(的索引事件運算符this訪問器派生分部類抽象封閉靜態結構的不同)

追溯 {} 矩形 bst 關鍵字 特定 類對象 direct 派生類的構造函數 1.類的索引 索引是一組get和set鋒訪問器,支持按照飲用數組元素的方法來引用對象.索引通常便是多個數據成員,並且它總是以雷類的事例成員的方式存在.聲明索引的方法: 返回類型 this

十一、接口(接口的概念實現繼承實現)、抽象抽象方法(抽象抽象方法概念使用)

輸出 重寫 關鍵字 new clas main ride ring strac 接口 接口是一種用來定義程序的協議,它描述可屬於任何類和結構的一組相關行為。 接口可由方法、屬性、事件和索引器這四種成員類型的任何組合構成,但不能包含字段。 接口通過類繼承來實現,一個類雖然只能

java中介面抽象異同點在專案中的應用

1包 作用: 管理類 定義: package 包名; package必須作為原始檔 的第一條語句 包名的命名規則 使用其他包中的類 完整類名 先import匯入類,再使用 2 Eclipse 3 訪問許可權 類的訪問許可權: 公共類, 非公共類 公共類的應用場景

C#中的虛方法、抽象方法、抽象介面的聯絡區別

虛方法的關鍵字是virtual抽象方法的關鍵字是abstract重寫都是override 虛方法也可以new虛方法和抽象方法的區別:虛方法:可以在抽象類和非抽象類中定義,可以寫在父類中,在子類中可以被重寫,在定義虛方法時必須實現虛方法 (在定義虛方法時需要寫實現方法的程式碼或者至少

c# 介面抽象抽象方法的例項

用抽象方法和介面實現: 1 建立一個人的類包含屬性:姓名,年齡,性別,住址  對屬性進行封裝,自我介紹,吃的方法 2 建立一個男人的類繼承於人的類,建立一個獨有的特性:體重,對自我介紹的方法進行重寫(輸出:我是?,我來自於?,我的性別是?) 3 建立一個女人的類繼承於人的類

JAVA基礎第三章-物件、抽象介面 JAVA基礎第一章-初識java JAVA基礎第二章-java三大特性:封裝、繼承、多型

 業內經常說的一句話是不要重複造輪子,但是有時候,只有自己造一個輪子了,才會深刻明白什麼樣的輪子適合山路,什麼樣的輪子適合平地! 我將會持續更新java基礎知識,歡迎關注。   往期章節: JAVA基礎第一章-初識java JAVA基礎第二章-java三大特

JAVA基礎第三章-物件、抽象介面

  前言      標題沒有看錯,真的是讓我寫個 bug!      剛接到這個需求時我內心沒有絲毫波瀾,甚至還有點激動。這可是我特長啊;終於可以光明正大的寫 bug 了

Java介面抽象內部類

介面的概念     在Java中介面是一個全部由抽象方法組成的集合,介面需要用interface定義,裡面只能有抽象的方法和常量。 介面體現的是事物擴充套件的功能,在Java中,類定義了一個實體,包括實體的屬性,實體的行為。而介面定義了一個實體可能發生的動作,只有一個宣告,

JAVA基礎第四章-集合框架Collection篇 JAVA基礎第一章-初識java JAVA基礎第二章-java三大特性:封裝、繼承、多型 JAVA基礎第三章-物件、抽象介面 記一次list迴圈刪除元素的突發事件!

 業內經常說的一句話是不要重複造輪子,但是有時候,只有自己造一個輪子了,才會深刻明白什麼樣的輪子適合山路,什麼樣的輪子適合平地! 我將會持續更新java基礎知識,歡迎關注。   往期章節: JAVA基礎第一章-初識java JAVA基礎第二章-java三大特性

(java) 面向物件 ---- 繼承、重寫過載、抽象介面

面向物件共有三個特徵:封裝、繼承、多型 一、【java繼承  extends】 1.  Java不支援類的多繼承,但支援多重繼承。(支援介面的多繼承) 2.  子類擁有父類非private的屬性和方法。 3.  子類可以擁有自己的屬性和方法,即子類可以對父類進行擴充套

抽象密封介面

一、抽象類: 抽象類是一種模板模式,為所有子類提供了一個通用模板,子類可以在這個模板基礎上進行擴充套件,可以避免子類設計的隨意性,就可以做到嚴格限制子類的設計,使子類之間更加通用。 抽象類:包含抽象方法的類(或只對部分方法進行抽象),只有方法的宣告,沒有