欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中的繼承詳情

 更新時間:2022年04月10日 19:50:09   作者:一計之長  
這篇文章主要介紹了Java中的繼承詳情,繼承是面向對象三大特征之一,可以使得子類具有父類的屬性和方法,還可以在子類中重新定義,以及追加屬性和方法,下文介紹需要的朋友可以參考下

一. 繼承

眾所周知,我們Java語言是一種面向對象的編程語言,每當我們提到Java的特性,大家一定會在腦海里浮現(xiàn)出Java中的?繼承、多態(tài)以及封裝?。 我們在日常的開發(fā)中經(jīng)常會用到這三種特性,本文首先給大家介紹這三大特性之一——繼承。

1.1 繼承的實現(xiàn)

  • ?繼承的概念?

繼承是面向對象三大特征之一,可以使得子類具有父類的屬性和方法,還可以在子類中重新定義,以及追加屬性和方法。

  • 實現(xiàn)繼承的格式?:?繼承通過extends實現(xiàn)?
  • 格式:??class 子類 extends 父類 { }??
  • 舉例:??class Dog extends Animal { }??
  • 繼承帶來的好處
  • 繼承可以讓類與類之間產(chǎn)生關系,子父類關系,產(chǎn)生子父類后,子類則可以使用父類中非私有的成員。

我們?yōu)榱俗尨蠹腋玫恼莆掌涓袷剑?strong>現(xiàn)在給出一個簡單的案例加以說明:

public class Fu {
public void show() {
System.out.println("show方法被調用");
}
}
public class Zi extends Fu {
public void method() {
System.out.println("method方法被調用");
}
}
public class Demo {
public static void main(String[] args) {
//創(chuàng)建對象,調用方法
Fu f = new Fu();
f.show();

Zi z = new Zi();
z.method();
z.show();
}
}

該案例執(zhí)行的結果如下:

Java繼承知多少,本文詳細告訴你_Java SE

1.2 繼承的好處和弊端

  • ?繼承好處?
  • 提高了代碼的復用性(多個類相同的成員可以放到同一個類中)
  • 提高了代碼的維護性(如果方法的代碼需要修改,修改一處即可)
  • ?繼承弊端?
  • 繼承讓類與類之間產(chǎn)生了關系,類的耦合性增強了,當父類發(fā)生變化時子類實現(xiàn)也不得不跟著變化,削弱了子類的獨立性
  • ?繼承的應用場景?:
  • 使用繼承,需要考慮類與類之間是否存在?is..a?的關系,不能盲目使用繼承
  • is..a的關系:誰是誰的一種,例如:老師和學生是人的一種,那人就是父類,學生和老師就是子類

二. 繼承中的成員訪問特點

2.1 繼承中變量的訪問特點

在子類方法中訪問一個變量,采用的是??就近原則??。

  • 子類局部范圍找
  • 子類成員范圍找
  • 父類成員范圍找
  • 如果都沒有就報錯(不考慮父親的父親…)

我們還是以上面的案例加以說明:

class Fu {
int num = 10;
}
class Zi {
int num = 20;
public void show(){
int num = 30;
System.out.println(num);
}
}
public class Demo1 {
public static void main(String[] args) {
Zi z = new Zi();
z.show(); // 輸出show方法中的局部變量30
}
}

具體該案例執(zhí)行的結果如下:

Java繼承知多少,本文詳細告訴你_重寫_02

2.2 super

  • ?thisVS.super關鍵字?:
  • ?this?:代表?本類對象?的引用
  • ?super?:代表?父類存儲空間?的標識(可以理解為父類對象引用)
  • ?this和super的使用:?
  • ?成員變量?:
  • this.成員變量 - 訪問本類成員變量
  • super.成員變量 - 訪問父類成員變量
  • ?成員方法?:
  • this.成員方法 - 訪問本類成員方法
  • super.成員方法 - 訪問父類成員方法
  • 構造方法:
  • this(…) - 訪問本類構造方法
  • super(…) - 訪問父類構造方法

2.3 繼承中構造方法的訪問特點

注意:子類中所有的構造方法默認都會訪問父類中無參的構造方法

子類會繼承父類中的數(shù)據(jù),可能還會使用父類的數(shù)據(jù)。所以,子類初始化之前,一定要先完成父類數(shù)據(jù)的初始化,原因在于,每一個子類構造方法的第一條語句默認都是:??super()??

問題:如果父類中沒有無參構造方法,只有帶參構造方法,該怎么辦呢?

過使用super關鍵字去顯示的調用父類的帶參構造方法

父類中自己提供一個無參構造方法

推薦方案:

自己給出無參構造方法

2.4 繼承中成員方法的訪問特點

通過子類對象訪問一個方法

  • 子類成員范圍找
  • 父類成員范圍找
  • 如果都沒有就報錯(不考慮父親的父親…)

2.5 super內存圖

  • 對象在堆內存中,會單獨存在一塊super區(qū)域,用來存放父類的數(shù)據(jù)

Java繼承知多少,本文詳細告訴你_繼承_03

2.6 方法重寫

  • 1、???方法重寫概念???
  • 子類出現(xiàn)了和父類中一模一樣的方法聲明(方法名一樣,參數(shù)列表也必須一樣)
  • 2、???方法重寫的應用場景???
  • 當子類需要父類的功能,而功能主體子類有自己特有內容時,可以重寫父類中的方法,這樣,即沿襲了父類的功能,又定義了子類特有的內容
  • 3、???Override注解???
  • 用來檢測當前的方法,是否是重寫的方法,起到【校驗】的作用

2.7 方法重寫的注意事項

  • 方法重寫的注意事項
  • 私有方法不能被重寫(?父類私有成員子類是不能繼承的?)
  • 子類方法訪問權限不能更低(?public > 默認 > 私有?)

我們仍是通過前面的案例加以說明這個問題:

public class Fu {
private void show() {
System.out.println("Fu中show()方法被調用");
}

void method() {
System.out.println("Fu中method()方法被調用");
}
}

public class Zi extends Fu {

/* 編譯【出錯】,子類不能重寫父類私有的方法*/
@Override
private void show() {
System.out.println("Zi中show()方法被調用");
}

/* 編譯【出錯】,子類重寫父類方法的時候,訪問權限需要大于等于父類 */
@Override
private void method() {
System.out.println("Zi中method()方法被調用");
}

/* 編譯【通過】,子類重寫父類方法的時候,訪問權限需要大于等于父類 */
@Override
public void method() {
System.out.println("Zi中method()方法被調用");
}
}

Java繼承知多少,本文詳細告訴你_this與super_04

與我們給出的注釋是一致的;因此在我們日常的編程中一定要注意。

2.8. Java中繼承的注意事項

  • Java中繼承的注意事項
  • Java中類只支持單繼承,不支持多繼承
  • 錯誤范例:??class A extends B, C { }??
  • Java中類支持多層繼承

為了讓大家更好的理解該知識點,我們給出以下的代碼:

public class Granddad {

public void drink() {
System.out.println("爺爺愛喝酒");
}

}

public class Father extends Granddad {

public void smoke() {
System.out.println("爸爸愛抽煙");
}

}

public class Mother {

public void dance() {
System.out.println("媽媽愛跳舞");
}

}
public class Son extends Father {
// 此時,Son類中就同時擁有drink方法以及smoke方法
}

三. 繼承練習

  • ?需求?:定義老師類和學生類,然后寫代碼測試;最后找到老師類和學生類當中的共性內容,抽取出一個父類,用繼承的方式改寫代碼,并進行測試
  • 根據(jù)其需求我們給出以下的思路:

           ①定義老師類(姓名,年齡,教書())

           ②定義學生類(姓名,年齡,學習())

           ③定義測試類,寫代碼測試

           ④共性抽取父類,定義人類(姓名,年齡)

           ⑤定義老師類,繼承人類,并給出自己特有方法:教書()

           ⑥定義學生類,繼承人類,并給出自己特有方法:學習()

           ⑦定義測試類,寫代碼測試

我們通過以上的需求以及思路實現(xiàn)如下的代碼:

package inheritExample;
class Person {
private String name;
private int age;

public Person() {
}

public Person(String name, int age) {
this.name = name;
this.age = age;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}
}

class Teacher extends Person {

public Teacher() {}

public Teacher(String name,int age) {
super(name,age);
}

public void teach() {
System.out.println("用心去撰寫每一篇博客");
}

}

class Student extends Person{
public Student() {}

public Student(String name, int age) {
super(name,age);
}

public void study(){
System.out.println("讀者閱讀");
}

}

class PersonDemo {
public static void main(String[] args){
//創(chuàng)建老師類對象并進行測試
Teacher t = new Teacher();
t.setName("一計之長");
t.setAge(28);
System.out.println(t.getName() + "," + t.getAge());
t.teach();

// 創(chuàng)建學生類對象測試
Student s1 = new Student("readA",18);
System.out.println(s1.getName() + "," + s1.getAge());
s1.study();


Student s2 = new Student("readB",23);
System.out.println(s2.getName() + "," + s2.getAge());
s2.study();
}
}

具體執(zhí)行的結果如下:

Java繼承知多少,本文詳細告訴你_重寫_05

總結

本文主要是詳細給大家介紹了java中的三大特性中的繼承,包括繼承的概念、繼承的實現(xiàn)以及優(yōu)缺點,另外還介紹了繼承中成員訪問特點,接著給大家介紹了super和this這兩個關鍵字的相關知識,最后給大家介紹了方法的重寫以及在使用繼承中需要注意的事項。與此同時,我們在介紹相關知識的同時給出了相應的案例幫助大家更好的理解相應的知識點。

到此這篇關于Java中的繼承詳情的文章就介紹到這了,更多相關Java繼承內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java之通過OutputStream寫入文件與文件復制問題

    Java之通過OutputStream寫入文件與文件復制問題

    這篇文章主要介紹了Java之通過OutputStream寫入文件與文件復制問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • java并發(fā)編程中ReentrantLock可重入讀寫鎖

    java并發(fā)編程中ReentrantLock可重入讀寫鎖

    這篇文章主要介紹了java并發(fā)編程中ReentrantLock可重入讀寫鎖,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-05-05
  • Java中的事件處理機制詳細解讀

    Java中的事件處理機制詳細解讀

    這篇文章主要介紹了Java中的事件處理機制詳細解讀,ava事件處理是采取"委派事件模型",當事件發(fā)生時,產(chǎn)生事件的對象會把此"信息"傳遞給"事件的監(jiān)聽者"處理,需要的朋友可以參考下
    2024-01-01
  • Spring中@ExceptionHandler注解的工作原理詳解

    Spring中@ExceptionHandler注解的工作原理詳解

    這篇文章主要介紹了Spring中@ExceptionHandler注解的工作原理詳解,Spring Web注解@ExceptionHandler可以用來指定處理某類異常的控制器方法,從而在這些異常發(fā)生時,會有相應的控制器方法來處理此類異常,需要的朋友可以參考下
    2024-01-01
  • oracle數(shù)據(jù)庫導入TXT文件方法介紹

    oracle數(shù)據(jù)庫導入TXT文件方法介紹

    這篇文章主要介紹了oracle數(shù)據(jù)庫導入TXT文件方法介紹,文中向大家展示了具體代碼示例,需要的朋友可以參考下。
    2017-09-09
  • Spring Boot使用JSR-380進行校驗的示例

    Spring Boot使用JSR-380進行校驗的示例

    這篇文章主要介紹了Spring Boot使用JSR-380進行校驗,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • springboot如何根據(jù)不同的日志級別顯示不同的顏色

    springboot如何根據(jù)不同的日志級別顯示不同的顏色

    這篇文章主要介紹了springboot如何根據(jù)不同的日志級別顯示不同的顏色問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Java使用Sa-Token框架完成踢人下線功能

    Java使用Sa-Token框架完成踢人下線功能

    踢人下線是一個很常見的需求,本文主要介紹了Java使用Sa-Token框架完成踢人下線功能,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-05-05
  • SpringCloud?服務注冊中的nacos實現(xiàn)過程

    SpringCloud?服務注冊中的nacos實現(xiàn)過程

    這篇文章主要介紹了SpringCloud?服務注冊之nacos實現(xiàn)過程,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • SVN 安裝教程之服務器和客戶端

    SVN 安裝教程之服務器和客戶端

    這篇文章主要介紹了SVN 安裝教程之服務器和客戶端的相關資料,這里對安裝步驟進行了詳細介紹,需要的朋友可以參考下
    2016-11-11

最新評論