Java基礎知識總結之繼承
一、繼承的基本概念
什么是繼承呢?
我們可以想一下,既然是“繼承”,那么它必須是在兩個或多個類之間所發(fā)生的關系吧,這樣我們就可以說:這個類繼承自什么類,假如只有一個類的話,它既無法繼承別的類,而且也沒有別的類來繼承它,這就構不成什么繼承關系了哈,理清楚了這一層關系之后我們再來談談它繼承了什么呢? 既然說什么什么類繼承自什么什么類,那它肯定要從繼承的那個類中繼承點什么呀!我們把發(fā)生繼承關系的這兩個類稱為父類和子類,子類可以繼承父類的屬性和方法,這個就是繼承的基本概念,下面我們來系統(tǒng)的學習一下吧 ~ ~
繼承是面向對象的三大特征之一。可以使得子類具有父類的屬性和方法,還可以在子類中重新定義,追加屬性和方法
繼承的格式:
public class 子類名 extends父類名{}
public class Zi extends Fu{}
父類也被稱為基類、超類
子類也被稱為派生類
二、繼承的好處和弊端
繼承的好處
提高了代碼的復用性(多個類相同的成員可以放在同一個類中)
提高了代碼的維護性(如果方法的代碼需要改,修改父類中的方法即可)
繼承的壞處
類與類之間產(chǎn)生了關系,提高了耦合性,父類變化子類也不得不變化,削弱了子類的獨立性
什么時候使用繼承
繼承關系的體現(xiàn)(什么是什么的一種,大集合包含小集合,比如老虎可以繼承動物類,因為老虎屬于動物)
三、繼承中變量訪問的特點
在子類方法中訪問一個變量
子類局部范圍找
子類成員范圍找
父類成員范圍找
沒有就會報錯
四、super關鍵字
和this關鍵字用法相似
this:代表本類對象的引用
super:代表父類存儲空間的標識(可以理解為父類對象的引用)

五、繼承中構造方法的訪問特點
子類中所有的構造方法默認都會訪問父類中無參的構造方法。
因為子類會繼承父類中的數(shù)據(jù),可能還會使用父類的數(shù)據(jù)。所以子類初始化前,一定先完成父類數(shù)據(jù)的初始化(訪問父類的構造方法就是為了使得父類數(shù)據(jù)初始化)
每一個子類構造方法的第一條語句默認都是:super()
如果父類中沒有無參構造方法,只有帶參構造方法
通過使用super關鍵字去顯式的調(diào)用父類的帶參構造方法
在父類中自己提供一個無參調(diào)用方法
六、繼承中成員方法的訪問特點
通過子類對象訪問一個方法
先在子類范圍找,然后在父類范圍找,如果都沒有就報錯(不考慮父親的父親)
七、方法重寫
方法重寫概述:
子類中出現(xiàn)了和父類一模一樣的方法聲明
應用:當子類需要父類的功能,而功能主體子類有自己的特有內(nèi)容時,可以重寫父類中的方法,這樣,即沿襲了父類的功能,又定義了子類特有的內(nèi)容。
@Override
是一個注解(注解后面會學習到)
可以幫助我們檢查重寫方法的方法聲明的正確性
方法重寫的注意事項:
父類中的私有方法,子類不能繼承,所以也不能重寫
如果沒有寫訪問權限,默認是default
子類訪問父類時,權限不能比父類的高
Java中不能同時繼承多個類,但是可以多層繼承,一層套一層
訪問權限
1、private: Java語言中對訪問權限限制的最窄的修飾符,一般稱之為“私有的”。被其修飾的屬性以及方法只能被該類的對象訪問,其子類不能訪問,更不能允許跨包訪問。
2、default:即不加任何訪問修飾符,通常稱為“默認訪問權限“或者“包訪問權限”。該模式下,只允許在同一個包中進行訪問。
3、protected: 介于public 和 private 之間的一種訪問修飾符,一般稱之為“保護訪問權限”。被其修飾的屬性以及方法只能被類本身的方法及子類訪問,即使子類在不同的包中也可以訪問。
4、public: Java語言中訪問限制最寬的修飾符,一般稱之為“公共的”。被其修飾的類、屬性以及方法不僅可以跨類訪問,而且允許跨包訪問。
| 權限 | 類內(nèi) | 同包 | 不同包子類 | 不同包非子類 |
| private | √ | × | × | × |
| default(不寫) | √ | √ | × | × |
| protected | √ | √ | √ | × |
| public | √ | √ | √ | √ |
八、包
包就是文件夾,不同的包下可以放同名的文件,對類進行分類管理
src com 下
包的定義格式
格式:packpage包名;(多級包分開用)
package com.it(二級包)
可以用cmd命令編譯并且執(zhí)行一個代碼,從中理解包和文件夾的關系,以及不同包下為什么可以出現(xiàn)相同的命名
導包
使用不同包下的類時,使用的時候要寫類的全路徑,寫起來太麻煩
為了簡化帶包操作,java提供了導包功能
import包名;
九、修飾符
權限修飾符
上表有
狀態(tài)修飾符
final(最終態(tài))
關鍵字是終的意思,可以修飾成員方法,成員變量,類
final關鍵字聲明類可以把類定義為不能繼承的,即最終類;
也可以用于修飾**方法,**該方法不能被子類重寫;
也可以用于修飾變量,表明該變量是常量,不能再次被賦值;
被聲明為final類的方法自動的聲明為final,但是實例變量并不是final
final修飾局部變量
當變量是基本類型:final修飾指的是基本類型的數(shù)據(jù)值不能發(fā)生改變
當變量是引用類型:final修飾指的是引用類型的地址值不能發(fā)生改變,但是地址值的內(nèi)容可以發(fā)生改變.
例如:final int age=20;屬于數(shù)據(jù)值不能發(fā)生改變
final Student s=new Student();屬于地址值,內(nèi)容可以變,值不能變
十、static(靜態(tài))
可以修飾成員方法,成員變量
特點:
static修飾的特點:被類的所有對象共享
這也是我們判斷是否適用靜態(tài)變量關鍵字的條件
可以通過類名調(diào)用,也可以通過對象名調(diào)用(推薦適用類名調(diào)用)
直接寫類名然后定義這個靜態(tài)變量的值是多少
訪問特點:
靜態(tài)成員方法只能訪問靜態(tài)成員;
非靜態(tài)成員方法可以訪問所有;
到此這篇關于Java基礎知識總結之繼承的文章就介紹到這了,更多相關Java繼承內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
解決mybatis竟然報Invalid value for getInt()的問題
使用mybatis遇到一個非常奇葩的問題,總是報Invalid value for getInt()的問題,怎么解決呢?下面小編通過場景分析給大家代來了mybatis報Invalid value for getInt()的解決方法,感興趣的朋友參考下吧2021-10-10
Spring Cloud根據(jù)服務名獲取服務的ip端口問題
這篇文章主要介紹了Spring Cloud根據(jù)服務名獲取服務的ip端口,本篇示例我就以Nacos注冊中心為例了,下面是我注冊的兩個服務,需要的朋友可以參考下2022-09-09
Java中l(wèi)ist根據(jù)id獲取對象的幾種方式
這篇文章主要給大家介紹了關于Java中l(wèi)ist根據(jù)id獲取對象的幾種方式,文中通過實例代碼介紹的非常詳細,對大家學習或者使用java具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07
SpringBoot集成quartz實現(xiàn)定時任務詳解
最為常用定時任務框架是Quartz,并且Spring也集成了Quartz的框架,Quartz不僅支持單實例方式還支持分布式方式。本文主要介紹Quartz,基礎的Quartz的集成案例本,以及實現(xiàn)基于數(shù)據(jù)庫的分布式任務管理和控制job生命周期2022-08-08

