繼 承(面向對象特征之一)

1:成員變量。

???? 當子父類中出現一樣的屬性時,子類類型的對象,調用該屬性,值是子類的屬性值。

???? 如果想要調用父類中的屬性值,需要使用一個關鍵字:super

?????This:代表是本類類型的對象引用。

?????Super:代表是子類所屬的父類中的內存空間引用。

???? 注意:子父類中通常是不會出現同名成員變量的,因為父類中只要定義了,子類就不用在定義了,直接繼承過來用就可以了。

2:成員函數。

當子父類中出現了一模一樣的方法時,建立子類對象會運行子類中的方法。好像父類中的方法被覆蓋掉一樣。所以這種情況,是函數的另一個特性:重寫

3:構造函數。

發現子類構造函數運行時,先運行了父類的構造函數。為什么呢?

原因:子類的所有構造函數中的第一行,其實都有一條隱身的語句super();

super():?表示父類的構造函數,并會調用于參數相對應的父類中的構造函數。而super():是在調用父類中空參數的構造函數。

為什么子類對象初始化時,都需要調用父類中的函數?(為什么要在子類構造函數的第一行加入這個super()?)

因為子類繼承父類,會繼承到父類中的數據,所以必須要看父類是如何對自己的數據進行初始化的。所以子類在進行對象初始化時,先調用父類的構造函數,這就是子類的實例化過程

?

注意:子類中所有的構造函數都會默認訪問父類中的空參數的構造函數,因為每一個子類構造內第一行都有默認的語句super();

如果父類中沒有空參數的構造函數,那么子類的構造函數內,必須通過super語句指定要訪問的父類中的構造函數。

如果子類構造函數中用this來指定調用子類自己的構造函數,那么被調用的構造函數也一樣會訪問父類中的構造函數。

問題:

super()和this()是否可以同時出現的構造函數中?

兩個語句只能有一個定義在第一行,所以只能出現其中一個。

super()或者this():為什么一定要定義在第一行?

因為super()或者this()都是調用構造函數,構造函數用于初始化,所以初始化的動作要先完成。

在方法覆蓋時,注意兩點:

1:子類覆蓋父類時,必須要保證,子類方法的權限必須大于等于父類方法權限可以實現繼承。否則,編譯失敗。(舉個例子,在父類中是public的方法,如果子類中將其降低訪問權限為private,那么子類中重寫以后的方法對于外部對象就不可訪問了,這個就破壞了繼承的含義)

2:覆蓋時,要么都靜態,要么都不靜態。 (靜態只能覆蓋靜態,或者被靜態覆蓋)

?

繼承的一個弊端:打破了封裝性。對于一些類,或者類中功能,是需要被繼承,或者復寫的。

這時如何解決問題呢?介紹一個關鍵字,final

final特點:(詳細解釋見前面)

1:這個關鍵字是一個修飾符,可以修飾類,方法,變量。

2:被final修飾的類是一個最終類,不可以被繼承。

3:被final修飾的方法是一個最終方法,不可以被覆蓋。

4:被final修飾的變量是一個常量,只能賦值一次。

轉載于:https://www.cnblogs.com/caomeipiper/p/8507398.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/252260.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252260.shtml
英文地址,請注明出處:http://en.pswp.cn/news/252260.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何將cv::Mat類型轉換為imgui中的ImTextureID類型

背景: 我原來的工程是使用opencv的,所以程序中的圖像都是表示為cv::Mat類型,為了能夠在imgui窗口中顯示我的cv::Mat的圖像,我找到了下面這個函數: void ImGui::Image(ImTextureID user_texture_id, const ImVec2&…

react native 原生模塊橋接的簡單說明

原文出自:https://github.com/prscX/awes...博客鏈接:https://ssshooter.com/2019-02... Android 創建原生模塊包 通過繼承 ReactPackage 為你的原生模塊包創建 Java 類,可以這么寫:覆蓋 createNativeModules 和 createViewManage…

UVa 1354 天平難題 枚舉二叉樹

題意:給出房間寬度 r 和 s 個掛墜的重量 wi,設計一個盡量寬的天平,掛著所有掛墜。天平由一些長度為 1 的木棍組成,木棍的每一端要么掛一個掛墜,要么掛另外一個木棍。 這題卡了很久,看了很多大神的代碼&…

通過指針便利圖像元素

for (size_t y 0; y < image.rows; y) {//row_ptr為第y行的頭指針&#xff0c;unsigned char* row_ptr image.ptr<unsigned char>(y);for (size_t x 0; x < image.cols; x) {//data_ptr: 指向待訪問像素unsigned char* data_ptr &row_ptr[x*image.channels…

[精華][推薦]SSO CAS單點登錄框架學習 搭建詳細步驟及源碼

1.了解單點登錄 SSO 主要特點是: SSO 應用之間使用 Web 協議(如 HTTPS) &#xff0c;并且只有一個登錄入口. SSO 的體系中有下面三種角色: 1) User(多個) 2) Web 應用(多個) 3) SSO 認證中心(一個) 2.SSO 實現包含以下三個原則 1) 所有的登錄都在 SSO 認證中心進行。 2) SS…

電腦下載的M4A格式文件怎么轉換為MP3格式

M4A文件格式并不是一個家喻戶曉的名字&#xff0c;與&#xff2d;&#xff30;&#xff13;格式相比&#xff0c;知名度遠遠落后。但是&#xff0c;這并不意味著它無關緊要&#xff0c;有時候我們下載的音樂可能就是M4A格式的&#xff0c;如果換一個設備播放可能就會出現格式不…

python-for循環

一、功能 for 循環提供了python中最強大的循環結構&#xff08;for循環是一種迭代循環機制&#xff0c;而while循環是條件循環&#xff0c;迭代即重復相同的邏輯操作&#xff0c;每次操作都是基于上一次的結果&#xff0c;而進行的&#xff09; Python for循環可以遍歷任何序列…

六、利用frp穿透連接內網的linx系統和windows系統

服務端的配置 # frps.ini [common] bind_port 7000 說明&#xff1a;防火墻放行該端口 啟動&#xff1a;./frps -c ./frps.ini 后臺啟動&#xff1a;nohup ./frps -c ./frps.ini & 客戶端的配置 (1)windows系統 # frpc.ini [common] server_addr x.x.x.x server_port 70…

根據相機內參進行圖像去畸變

cv::Mat img; cv::Mat img_undistort; double fx,fy, cx, cy, k1, k2, p1, p2, k3;for(int v 0; v < img.rows; v){for(int u 0; u < img.cols; u){//根據內參數&#xff0c;計算歸一化坐標系下的坐標點double x (u-cx)/fx;double y (v-cy)/fy;double r2 x*x y*y;/…

initialize方法與load方法比較

load方法和initialize方法類似點 1. 都只會調用一次2. 父類在子類之前加載 復制代碼不同點在于&#xff1a; 1. 加載時間不同&#xff0c;load方法在main()函數前進行調用&#xff0c;initialize在第一次調用類的所屬方法時在調用<可能永遠不調用>。2. load方法不會被Cat…

KindEditor

1、進入官網 2、下載 官網下載&#xff1a;http://kindeditor.net/down.php 3、文件夾說明 ├── asp asp示例 ├── asp.net asp.net示例 ├── attached 空文件夾&#xff0c;放置關聯文件attached ├── …

service mysqld start,Failed to start mysqld.service: Access denied

service mysqld start 然后報&#xff1a; AUTHENTICATING FOR org.freedesktop.systemd1.manage-units Authentication is required to start mysqld.service.Authenticating as: lll,,, (lll)Password: polkit-agent-helper-1: pam_authenticate failed: Authentication fa…

使用realsense t265測試svo2.0視覺里程計

畢業三年了&#xff0c;現在是第二份工作&#xff0c;第一份工作已經結束一年半了&#xff0c;這意味著&#xff0c;我有一年半的時間沒有搞視覺SLAM相關的東西了&#xff0c;雖然在第二份工作也是做視覺相關的&#xff0c;但是只是用到一些目標識別和跟蹤的知識&#xff0c;并…

JSP動作標識

jsp中include有兩種形式: include指令&#xff1a;<% include file""%> include動作&#xff1a;<jsp:include page"" /> 他們的區別&#xff1a; <% include file""%>又稱靜態包含&#xff0c;使用時要注意以下幾點&#xf…

面試必問之JVM原理

1&#xff1a;什么是JVM JVM是Java Virtual Machine&#xff08;Java虛擬機&#xff09;的縮寫&#xff0c;JVM是一種用于計算設備的規范&#xff0c;它是一個虛構出來的計算機&#xff0c;是通過在實際的計算機上仿真模擬各種計算機功能來實現的。Java虛擬機包括一套字節碼指令…

InfluxDB學習之InfluxDB的基本操作

InfluxDB提供類SQL語法&#xff0c;如果熟悉SQL的話會非常容易上手。本文就為大家介紹一下InfluxDB的基本操作。 InfluxDB提供類SQL語法&#xff0c;如果熟悉SQL的話會非常容易上手。 一、InfluxDB操作方式 InfluxDB提供三種操作方式&#xff1a; 1&#xff09;客戶端命令行方式…

運行svo 2.0的 vio時遇到opencv沖突的問題

當我運行如下指令時&#xff0c;遇到了如下問題 指令 cd svo_ws source ./devel/setup.bash roslaunch svo_ros euroc_vio_mono.launch rosbag play MH_01_easy.bag -s 50 運行時遇到的問題 OpenCV Error: Bad argument (Unknown interpolation method) in resize, file /b…

DOS Network一月項目月報

歡迎大家閱讀DOS Network第一期項目月報&#xff01;DOS為了跟大家更好的溝通和交流&#xff0c;將在每個月為大家跟進DOS Network項目進展月報。月報主要分為項目研發和社區及營銷兩個部分。 如果你是剛認識DOS Network預言機網絡的新朋友&#xff0c;歡迎查閱往期文章&#x…

lsof詳解

from:https://www.cnblogs.com/the-study-of-linux/p/5501593.html lsof (list open files)是一個列出當前系統打開文件的工具。在linux系統環境下&#xff0c;任何事物都可以以文件形式存在&#xff0c;通過文件不僅可以訪問常規的數據&#xff0c;還可以訪問網絡連接和硬件。…

Ubuntu18.04上下載安裝使用sogou輸入法

下載地址&#xff1a;搜狗輸入法Linux官網-首頁 安裝設置網址&#xff1a;搜狗輸入法Linux官網-安裝指導 這樣Ubuntu下工作就更加方便了。