簡談Java的繼承-「誰都看得懂」篇

2020-12-06 酷愛小島

Java語言的繼承

這裡簡談Java語言的三大特性之二——繼承。

Java語言的三大特性是循序漸進的、是有順序性的,應該按照封裝-->繼承-->多態這樣的順序依次學習

繼承的定義

百度百科中這樣定義繼承:繼承是面向對象最顯著的一個特性。它是從已有的類中派生出新的類,新的類能吸收已有類的數據屬性和行為,並能擴展新的能力。Java繼承是使用已存在的類的定義作為基礎建立新類的技術,新類的定義可以增加新的數據或新的功能,也可以用父類的功能,但不能選擇性地繼承父類。

繼承的本質是對某一批類的抽象,從而實現對現實世界更好的建模。舉個通俗易懂的例子:

動物是自然界中某些生物的統稱,(初中生物書上也有「界門綱目科屬種」),在動物之下,又有許多種類,比如說貓、狗、老虎、獅子等等,這些實體的動物既擁有所有動物的特性,又有自身獨有的一些特性,比如老虎頭上有個「王」字等等。

可以說繼承是類和類之間的一種關係,繼承關係的兩個類,一個為父類(基類),另一個為子類(派生類)。子類繼承父類,使用關鍵字:extends,子類和父類之間,從意義上來講應該具有「is a」的關係,例如上述的例子中:Tiger is an animal, Cat is an animal ......

除此之外,類和類之間的關係還有:依賴、組合、聚合等等,需要注意的是,Java中類的繼承只有單繼承,沒有多繼承

繼承的關鍵字

extends

extends的意思是「擴展」,具體說就是子類是父類的擴展(即派生類是基類的擴展)。

使用時也比較容易,創建新類時,在類名的後面加上extends,再加上繼承的父類名即可:

//父類

public class animal{

//父類的相關屬性及方法

}

//子類

public class tiger extends animal{

//子類的相關屬性及方法

}

繼承的代碼示例

首先創建一個父類:Animal類

package 繼承示例;

public class Animal {

public void breath(){

System.out.println("animal can breath......"); //父類方法

}

}

再創建一個子類:Tiger類,用來繼承父類

package 繼承示例;

public class Tiger extends Animal {

public void eatMeat(){

System.out.println("Tiger will eat meat......"); //子類方法

}

}

最後創建一個測試主類:test類

package 繼承示例;

import java.util.function.ToDoubleBiFunction;

public class test {

//這是一個測試類

public static void main(String[] args) {

Animal am=new Animal();

am.breath(); //父類對象訪問父類方法,沒有問題

// am.eatMeat(); //父類對象訪問子類方法,編譯報錯!表示無法訪問到

System.out.println("============================================");

Tiger tg=new Tiger();

tg.breath(); //子類對象訪問父類方法,沒有問題

tg.eatMeat(); //子類對象訪問子類方法,沒有問題

}

}

測試結果如下:

animal can breath......

=================================

animal can breath......

Tiger will eat meat......

由此可見,繼承時,子類可以訪問父類和子類的方法,父類只能訪問父類的方法。

注意

父類的private方法不能被繼承父類的static方法不能被繼承父類的final方法不能被繼承父類的構造方法不能被繼承object類是所有類的父類(祖宗類)

相關焦點

  • Java基礎,類的繼承,粗略的理解希望對大家有所幫助!
    Java基礎:繼承讀者老爺們大家好,今天圖圖帶大家了解一下java基礎裡的繼承。首先確定一下我們今天的學習的三個目標。第一個是類的繼承;第二個是訪問控制權限;第三個方法重寫(覆蓋)override。好滴,話不多說,讓我們快樂的投身知識的海洋裡吧!
  • Java 中的繼承和多態(深入版)
    面向對象的三大特性:封裝、繼承、多態。在這三個特性中,如果沒有封裝和繼承,也不會有多態。那麼多態實現的途徑和必要條件是什麼呢?以及多態中的重寫和重載在JVM中的表現是怎麼樣?在Java中是如何展現繼承的特性呢?對於子類繼承於父類時,又有什麼限制呢?
  • Java反射是什麼?看這篇絕對會了!
    反射是開源框架中的一個重要設計理念,在源碼分析中少不了它的身影,所以,今天我會儘量用淺顯易懂的語言,讓你去理解下面這幾點:(1)反射的思想以及它的作用: 概念篇(2)反射的基本使用及應用場景: 應用篇我們用上面三種方式測試,通過三種方式列印各個 Class 對象都是相同的。
  • Java數據類型的「誰都看得懂」總結
    Java語言是一種強類型語言,所謂強類型語言就是所有變量的使用都必須嚴格符合規定,所有變量都必須先定義後使用。既然有強類型語言,就一定存在弱類型語言弱類型語言的使用就跟強類型語言恰恰相反了,他不需要先定義後使用,比如Python,JavaScript等等的計算機語言都屬於弱類型語言。
  • 用最傻瓜式的方法理解Java中的封裝、繼承和多態
    說到java中面向對象的封裝、繼承和多態,很多人會說這麼簡單這麼入門的東西一直講幹嘛,雖然是基礎,但是我們要明白,所有東西都是要在基礎上發展的,沒有基礎就去學其他的,那麼你肯定是很容易失敗的,那麼應該怎樣能夠用傻瓜式方法去理解Java面向對象的封裝、繼承和多態呢?
  • 大神詳解,這麼詳細的Java設計模式不收藏可惜了
    為什麼再看一遍設計模式,主要有幾個原因:***,很多優秀的源碼基本都使用了設計模式,明確設計模式能夠更好的看源碼。第二,很多中間件設計理念也是基於設計模式的,還有其他的語言,都有自己的設計優秀實踐。對於我來說,設計模式始於java,不止於java。第三,有了這種規範,可以更好的和他人溝通,言簡意賅。
  • Java基礎教程:java反射機制教程
    Java反射說的是在運行狀態中,對於任何一個類,我們都能夠知道這個類有哪些方法和屬性。很多動力節點的學員在面試中都會被問到Java反射機制這個問題,為了幫助大家更好的掌握這個知識點,小編整理了一些資料分享給大家。
  • 用經典案例來幫助初學者解析Java的「多態」
    說到Java的「多態」特性,很多人都十分熟悉、了解;也有很多人仍然在理解或闡述時對此含糊不清。我這裡還是用我13年前給我們公司新員工做內部培訓時用到的看起來似乎有點老掉牙的、但是仍然十分經典的案例來重新給有需要的java愛好者呈現一下「多態」的奧秘所在!
  • Java面向對象之:封裝、繼承、多態
    訪問權限修飾符應封裝的隱藏細節的理念,java提供了訪問權限修飾符來控制調用者的訪問權限,詳情如下:private:屬於類訪問權限,表示私有的,只能在當前類中訪問,使用private修飾的類、方法、欄位,在』離開當前類的作用域之後
  • Java程式設計師必備基礎:Java代碼是怎麼運行的?
    java源文件編譯為class字節碼 類加載器把字節碼加載到虛擬機的方法區。 運行時創建對象 方法調用,執行引擎解釋為機器碼 CPU執行指令 多線程切換上下文 編譯 我們都知道,java代碼是運行在Java虛擬機上的。
  • 深入分析java中的多態(從jvm角度分析)
    (2)Java的方法重寫(父類與子類之間的多態):子類可繼承父類中的方法,但有時子類並不想原封不動地繼承父類的方法,而是想作一定的修改,這就需要採用方法的重寫。重寫的參數列表和返回類型均不可修改。我們再舉個例子,就是子承父業,但是兒子有自己想法,對父親得產業進行再投資的過程。
  • java基礎教程:Collection集合,Collection 常用API
    集合:集合是java中提供的一種容器,可以用來存儲多個數據。集合和數組既然都是容器,它們有什麼區別呢?數組的長度是固定的。集合的長度是可變的。數組中存儲的是同一類型的元素,可以存儲任意類型數據。集合存儲的都是引用數據類型。如果想存儲基本類型數據需要存儲對應的包裝類型。
  • Java 生成隨機數的 5 種方式,你知道幾種?
    Java生成隨機數的幾種高級用法,這篇推薦看一下。 因此 方法是線程安全的。 什麼情況下隨機數的生成線程不安全: 線程1在第一次調用 時產生一個生成器 ,使用當前時間作為種子。
  • Java NIO 基礎知識
    我在工作的前兩年對這個問題也很不解,因為那個時候我認為自己已經非常熟悉 IO 操作了,讀寫文件什麼的都非常溜了,IO 包無非就是 File、RandomAccessFile、字節流、字符流這些,感覺沒什麼好糾結的。最混亂的當屬 InputStream/OutputStream 一大堆的類不知道誰是誰,不過了解了裝飾者模式以後,也都輕鬆破解了。
  • 開發崗位這麼多,為什麼選Java?你學Java了嗎-開課吧
    程式語言排行榜目前很多軟體都是用Java寫的,新出的系統和函數庫為了市場,也會儘量和Java兼容或者提供Java提到C++語言,很多人發現在使用過程中最容易出現的錯誤就是內存管理,而java有自動垃圾回收器,不用擔心內存。
  • 學Java反射,看這篇就夠了 | 原力計劃
    很多框架(比如Spring)都是配置化的(比如通過XML文件配置JavaBean,Action之類的),為了保證框架的通用性,它們可能需要根據配置文件加載不同的對象或類,調用不同的方法。解釋:對於大型的軟體,一個大公司的各個小組都有自己的分工,去實現不同的模塊,那麼各個小組之間如何協作就非常關鍵。
  • 我的東西我說了算——java訪問修飾符
    近年人口增長很迅速,java世界的公民也是翻倍的成長。原來的大鍋飯,所有東西都是大家共同擁有的制度也顯得不再那麼合適了,對於財產的所有權、使用權制度也提上了日程。經過委員們幾輪的分析論證,最終定下了一個對財產加標記,通過標記來認定財產所有權使用權的制度。
  • 做java的你,這些英文單詞都掌握了嗎?
    7、Base class 基類:即被擴展繼承的類。8、Call stack 調用堆棧:調用堆棧是一個方法列表,按調用順序保存所有在運行期被調用的方法。9、Casting 類型轉換 :即一個類型到另一個類型的轉換,可以是基本數據類型的轉換,也可以是對象類型的轉換10、Char 字符:容納單字符的一種基本數據類型。
  • 光明網評規範紅頭文件:別止於看得懂,還要經得起合法性審視
    光明網評規範紅頭文件:別止於看得懂,還要經得起合法性審視 光明網 2016-09-17 14:58 來源:澎湃新聞
  • 面試頻率最高的簡單問題——Java類的三大基本特徵
    學習過Java的程式設計師都知道,java類有三大特徵——封裝、繼承和多態。下面的文章給大家詳細的介紹一下java的這三大特性。封裝封裝是將描述某類事物的數據與處理這些數據的函數封裝在一起,形成一個有機整體,稱為類。類所具有的的封裝性可使程序模塊具有良好的獨立性與可維護性。