java基礎疑難點總結之成員變數的繼承,方法重載與重寫的區別,多態與動態綁定

来源:http://www.cnblogs.com/tanfd/archive/2016/11/24/6099379.html
-Advertisement-
Play Games

1.成員變數的繼承 1.1要點 子類用extends關鍵字繼承父類。子類中可以提供新的方法覆蓋父類中的方法。子類中的方法不能直接訪問父類中的私有域,子類可以用super關鍵字調用父類中的方法。在子類中可以增加域,增加方法或者覆蓋超類的方法,然而絕對不能刪除繼承的任何域和方法。 在一個子類被創建的時候 ...


1.成員變數的繼承

1.1要點

      子類用extends關鍵字繼承父類。子類中可以提供新的方法覆蓋父類中的方法。子類中的方法不能直接訪問父類中的私有域,子類可以用super關鍵字調用父類中的方法。在子類中可以增加域,增加方法或者覆蓋超類的方法,然而絕對不能刪除繼承的任何域和方法。

      在一個子類被創建的時候,首先會在記憶體中創建一個父類對象,然後在父類對象外部放上子類獨有的屬性,兩者合起來形成一個子類的對象。所以所謂的繼承使子類擁有父類所有的屬性和方法其實可以這樣理解,子類對象確實擁有父類對象中所有的屬性和方法,但是父類對象中的私有屬性和方法,子類是無法訪問到的,只是擁有,但不能使用。就像有些東西你可能擁有,但是你並不能使用。所以子類對象是絕對大於父類對象的,所謂的子類對象只能繼承父類非私有的屬性及方法的說法是錯誤的。可以繼承,只是無法訪問到而已。

      但是,子類不能繼承父類的構造方法。 在子類的構造方法中可以通過 super 關鍵字調用父類構造方法。註意:該語句必須是子類構造方法的第一條語句。子類中的構造方法一定要調用父類的構造方法,否則編譯出錯。

1.2成員變數的繼承

(1)關於私有成員變數

   無論父類中的成員變數是私有的、共有的、還是其它類型的,子類都會擁有父類中的這些成員變數。但是父類中的私有成員變數,無法在子類中直接訪問,必須通過從父類中繼承得到的protectedpublic方法(如gettersetter方法)來訪問。

例如:

 1 public class Father {
 2     private String name;
 3     private int age;
 4     public String getName(){
 5         return name;
 6     }
 7     public int age(){
 8         return age;
 9     }
10 
11 }
12 public class Child extends Father{
13     public String getName(){
14         return super.getName(); //通過這種方式訪問父類私有數據
15     }
16 }

(2)關於靜態成員變數

       無論父類中的成員變數是靜態的、還是非靜態的,子類都會擁有父類中的這些成員變數。

(3)關於被子類覆蓋的成員變數

       無論父類中的成員變數是否被子類覆蓋,子類都會擁有父類中的這些成員變數。

 

2.方法重載與重寫的區別

(1)方法的重寫Overriding和重載OverloadingJava多態性的不同表現。

(2)重寫Overriding父類與子類之間多態性的一種表現,重載Overloading一個類中多態性的一種表現。

(3)重載:方法名要一樣,但是參數類型和個數不一樣,返回值類型可以相同也可以不相同

(4)重寫:相同的方法名、返回類型和參數表。   註意:子類函數的訪問修飾許可權不能少於父類的

 

3.多態與動態綁定

3.1父類型變數引用子類型對象

例:Father father = new Child();

(1)父類類型的引用可以調用父類中定義的所有屬性和方法,不能調用子類中定義而父類中沒有的方法
2)父類中定義的方法

    如果子類中沒有重寫,則調用父類中定義的方法;

    如果子類中重寫了該方法,那麼父類類型的引用將會調用子類中的這個方法,這就是動態連接

3.2多態總結:

(1使用父類類型的引用指向子類的對象;
2該引用只能調用父類中定義的方法和變數;
3如果子類中重寫了父類中的一個方法,那麼在調用這個方法的時候,將會調用子類中的這個方法;(動態連接、動態調用)
4變數不能被重寫(覆蓋),重寫的概念只針對方法,如果在子類中”重寫“了父類中的變數,那麼在編譯時會報錯。

 


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

-Advertisement-
Play Games
更多相關文章
  • 製作背景:公司要做第三方文件管理系統,客戶有時候需要直接訪問文件,但是我們又不想暴露文件路徑,才有這代理訪問 基本功能介紹:讀取txt文檔、讀取圖片,如果有需要,可以通過插件讀取doc、pdf文檔, 控制器 模型代碼 效果展示: 讀取bmp尾碼的圖片 讀取txt文檔 ...
  • call_user_func():調用一個回調函數處理字元串, 可以用匿名函數,可以用有名函數,可以傳遞類的方法, 用有名函數時,只需傳函數的名稱 用類的方法時,要傳類的名稱和方法名 傳遞的第一個參數必須為函數名,或者匿名函數,或者方法 其他參數,可傳一個參數,或者多個參數,這些參數會自動傳遞到回調 ...
  • 調用內置的open函數打開文件,傳遞兩個參數:文件路徑(絕對路徑或相對路徑),打開模式('r':讀,'r+':讀寫,'w':寫,'b':二進位): f = open('data.txt','w') f.write('Hello world') f.close() f = open('data.txt ...
  • ...
  • dbutils的查詢,主要用到的是query方法,增加,修改和刪除都是update方法,update方法就不講了 只要創建ResultSetHandler介面不同的實現類對象就可以得到想要的查詢結果,該介面的實現類有 接下來講解一些經常用到的: 下麵的代碼都是要拋出異常的,為了看起來簡潔,我在這裡把 ...
  • 》題目要求 》》隨機輸入一個網址 》》截取出該網址的功能變數名稱並顯示 》程式實現 1 package cn.fury.test; 2 3 import java.util.Scanner; 4 5 public class Test{ 6 public static void main(String[] ...
  • 按排序位置的獲取單個欄目的鏈接信息 >>dede>> {dede:autochannel partsort='' typeid=''}{/dede:autochannel} >>dede>> partsort = '0' 欄目所在的排序位置 typeid = '0' 指定的父欄目—>等於0的時候,上... ...
  • 》題目要求: 》》編寫一個收銀櫃臺收款程式。 》》》要求:接收用戶輸入的商品單價、購買數量以及用戶付款的金額 》》》計算並輸出八折以後的商品金額和找零 》程式實現 1 package cn.fury.test; 2 3 import java.util.Scanner; 4 5 public cla ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...