Java學習 (十二)、面向對象編程(四)繼承,概念及super關鍵字

来源:http://www.cnblogs.com/wzy330782/archive/2016/03/14/5277395.html
-Advertisement-
Play Games

繼承 概念: ①   繼承背後的思想就是基於已存在的類來構建新類; ②   當從已存在類繼承時,就重用了它的方法和屬性,還可以添加新的方法和屬性來定製新類以應對需求; ③   當從其它類導出的類叫作子類,被導出的類叫作父類; ④   在Java中,除了Object類外,所有類都是子類,都有唯一父類;


繼承

概念:

①   繼承背後的思想就是基於已存在的類來構建新類;

②   當從已存在類繼承時,就重用了它的方法和屬性,還可以添加新的方法和屬性來定製新類以應對需求;

③   當從其它類導出的類叫作子類,被導出的類叫作父類;

④   在Java中,除了Object類外,所有類都是子類,都有唯一父類;

⑤   繼承在OO中不可或缺;

⑥   創建一個類時,總是在繼承;

類之間關係:Is-a繼承體現,Has-a組合體現,Like-a實現介面體現;

繼承的意義:代碼重用,體現不同抽象層次;

父子類關係:父類更抽象,更一般;子類更具體,更特殊;

繼承的特點:1、子類繼承父類的成員;2、具有層次結構;

繼承的優點:1、代碼重用;2、父類欄位和方法可用於子類;3、從抽象到具體形成類的結構體系;4、可輕鬆定義子類;

 

實現:

在Java中,用extends關鍵字來表示一個類繼承了另一個類;

public class Teacher extends Person{

         //代碼

}

 

super關鍵字

特點:

①   Super代表父類對象的引用,this代表當前對象的引用;

②   當子父類的成員出現重名時,可以通過super來進行區分;

③   子類的構造方法中,通過super關鍵字調用父類的構造方法;

public class JavaTeacher extends Teacher(){

         public JavaTeacher(String name,String school){

                   //通過調用父類的構造方法,完成對相關欄位值的初始化

      super(name,school);

    }

}

 

☆當構造一個類對象的時候一定會先調用父類的構造方法來構造父類的對象,調用父類的構造方法的語句必須是子類構造方法中的第一條指令;

 1 public class TeacherDemo{
 2     public static void main(String []args){
 3         B b=new B();
 4         
 5         //父類中加上showB()方法之後,調用的是子類的showB();
 6         
 7         //若要調用父類的showB();在子類中加上super.showB();
 8         b.showB();
 9     }
10 }
11 
12 class A{
13     public A(){
14         System.out.println("A的構造方法");
15     }
16     public void showA(){
17         System.out.println("A");
18     }
19     
20     public void showB(){
21         System.out.println("父類中的showB方法");
22     }
23 }
24 
25 class B extends A{
26     public B(){
27         //super();//調用父類無參的構造方法,可以省略
28         System.out.println("B的構造方法");
29     }
30     
31     public void showB(){
32         System.out.println("B");
33         //showA();//子類繼承父類,可以調用,同super.showA(); 因為名稱未衝突
34         super.showB();
35         
36     }
37 }
View Code

下麵這份代碼更清晰的表達了繼承

 1 public class TeacherDemo{
 2     public static void main(String []args){
 3         JavaTeacher jTeacher=new JavaTeacher("張三","清華");
 4         jTeacher.teaching();
 5         
 6         DBTeacher dTeacher=new DBTeacher("李四","清華");
 7         dTeacher.teaching();
 8     }
 9 }
10 
11 class Teacher{
12     private String name;
13     private String school;
14     
15     public Teacher(String name,String school){
16         this.name=name;
17         this.school=school;
18     }
19     
20     public void teaching(){
21         System.out.println("授課前準備");
22     }
23 }
24 
25 class JavaTeacher extends Teacher{
26     public JavaTeacher(String name,String school){
27         super(name,school);
28     }
29     
30     public void teaching(){
31         super.teaching();//調用父類teaching
32         System.out.println("打開eclipse");
33         System.out.println("書寫java代碼");
34     }
35 }
36 
37 class DBTeacher extends Teacher{
38     public DBTeacher(String name,String school){
39         super(name,school);
40     }
41     
42     public void teaching(){
43         super.teaching();//調用父類teaching
44         System.out.println("打開Oracle");
45         System.out.println("書寫pl-sql指令");
46     }
47 }
View Code

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 2.在定義常量的時候C語言中定義為const而JAVA中為final3.在JAVA聲明成員變數的時候,使用static來定義。4.在JAVA中的boolean類型只包括true和false,但是在C中非0為true,0為false5.在JAVA中byte、short、int、long其存儲空間分別為
  • 今天幫同學想用C實現數組的折半查找,本來演算法挺簡單的,可是折騰了好幾個小時才發現問題在哪,這個sizeof坑人不淺啊。 明白這裡了,附上一篇C實現折半的代碼  
  • 一、Java的特點:一次編譯,到處運行時間。   C語言在windows下執行:C源程式(.c)——>編譯 windows可執行文件(.exe)——>windows操作系統  Java語言:Java源文件——>編譯 Java位元組碼文件(.class)——>JVM虛擬機下 (能直接解釋Java位元組碼C
  • -->位元組碼解釋器工作就是通過改變這個計數器的值來選取下一條需要執行的位元組碼指令,分支、迴圈、跳轉、異常處理、線程恢復等基礎功能都需要依賴計數器來完成。 -->為了線程切換後能恢復到正確的執行位置,每條線程都需要一個獨立的程式計數器,各條線程之間計數器互不影響,獨立存儲,我們稱這類記憶體區域為"線程私
  • 初學python第一天,希望自己真正瞭解電腦語言,並且做出成效。   寫下學習筆記,記錄學習進度,娛樂學習,不斷成長。   python詳細介紹:   python是什麼?運用到哪裡?有哪些在使用它? python是一門編程語言,可以運用到各種場景,基本大型公司都在用它,主要運用在網路編程方面。如
  • 這是個Linux上簡易的http伺服器實現,主要就是tcp socket 和 pipe管道cgi重定向. 解析http協議. 簡單的處理並反饋給客戶端.並附帶一個client.c 測試服務端. 比較簡陋 去掉註釋400行以下. 能夠幫我們加深web伺服器的理解.
  • Java是天生就支持併發的語言,支持併發意味著多線程,線程的頻繁創建在高併發及大數據量是非常消耗資源的,因為java提供了線程池。在jdk1.5以前的版本中,線程池的使用是及其簡陋的,但是在JDK1.5後,有了很大的改善。JDK1.5之後加入了java.util.concurrent包,java.u
  • 本篇分兩部分:   在 OC 開發中,我們通常會將 error 置為 nil   在絕大多數情況下,這個方法並不會發生什麼錯誤,所以我們將 error 直接設置為 nil。但是出錯的時候可能就會無從下手進行調試。在 Swift 中引入了異常機制,這讓我們老牌程式員感到異常親切,因為在 java 或
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...