溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java繼承的問題引導(dǎo)和測試方法

發(fā)布時間:2021-08-24 15:12:12 來源:億速云 閱讀:118 作者:chen 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“Java繼承的問題引導(dǎo)和測試方法”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

目錄
  • 1.1、定義

  • 1.2、創(chuàng)建子類

  • 1.3、繼承的基本規(guī)則

    • 1. 子類可以繼承除父類構(gòu)造函數(shù)以外的一切成員

    • 2. 雖然子類繼承了父類的私有成員,但子類并不能直接訪問,如果想要訪問私有成員必須借助父類的公共接口。

    • 3. 只支持單一繼承,不支持多重繼承,但支持多層繼承

  • 1.4、阻止繼承

    • 1.4.1、final修飾符

      • 1. final 修飾的類不能被繼承

      • 2. final 修飾的方法不能被覆蓋

      • 3. final 修飾的變量(成員變量和局部變量)必須顯式初始化,且只能初始化一次。

      • 4. 常量定義的標準格式


1.1、定義

從現(xiàn)有類派生的類被稱作子類,也叫派生類,擴展類,或孩子類?,F(xiàn)有類被稱作超類,也叫基類,或父類。

1.2、創(chuàng)建子類

public class Person {}
public class Teacher extends Person{}

1.3、繼承的基本規(guī)則

1. 子類可以繼承除父類構(gòu)造函數(shù)以外的一切成員

為什么子類沒有繼承父類的構(gòu)造函數(shù) ?
父類構(gòu)造函數(shù)無法預(yù)知子類新增的屬性和方法,所以不能被繼承

2. 雖然子類繼承了父類的私有成員,但子類并不能直接訪問,如果想要訪問私有成員必須借助父類的公共接口。

public class Person {
	private String name;
	public String getName() {
		return name;
	}
	public void setName(String name) {
	    this.name = name;
	}
}
public class Teacher extends Person{
// 方法覆蓋
	public String getName() {
// super 調(diào)用父類的功能接口
    	return super.getName() + "校長";
	}
}
public class Test {
	public static void main(String... args) {
        Teacher flameking = new Teacher();
        System.out.println( flameking.getName() );
    }
}

測試結(jié)果:

Java繼承的問題引導(dǎo)和測試方法

小結(jié):

super.getName() + "校長"; 這樣便能訪問父類私有的 name 屬性 。所以在子類中可以通過super.父類公共接口 的形式,訪問父類的私有成員。

3. 只支持單一繼承,不支持多重繼承,但支持多層繼承

解釋:除了Object 沒有父類,每個類有且僅有一個直接父類,如果沒有明確指出父類,Object 被認為是這個類的父類。

也許有同學(xué)就會問了,既然 Object 是所有類的父類,那么為什么還可以繼承其他類呢?
正如解釋里所說:“沒有明確指出父類,Object 被認為是這個類的父類?!?/p>

沒有明確指出父類

public class Person {}
public class Teacher {}

繼承關(guān)系是這樣的:

Java繼承的問題引導(dǎo)和測試方法

繼承后

public class Teacher extends Person{}

繼承關(guān)系如下:

Java繼承的問題引導(dǎo)和測試方法

也許有同學(xué)又會問:既然不能多重繼承了,那我要同時繼承多個類的功能該怎么辦呢?解決辦法如下:

// 第一種方式(??)
public class Person {}
public class Employee {}
public class Teacher extends Person,Employee {}
// 第二種方式(??)
public class Person {}
public class Employee extends Person {}
public class Teacher extends Employee {}

小結(jié):

如上,既然不能多重繼承,那么利用多層繼承的方式便能同時繼承多個類的功能。

1.4、阻止繼承

當我們在創(chuàng)建一個新類時,現(xiàn)有某個類包含我們想要的代碼,那么讓這個新類繼承它,這樣我們就不用重新編寫代碼,就可以復(fù)用已存在的屬性和方法。可是有某個同學(xué)他偏偏不想讓別人利用他的代碼…

那他怎么做才能讓自己的代碼不被別人繼承呢?

1.4.1、final修飾符

1. final 修飾的類不能被繼承

使用方法:

public final class Person {}

效果顯示:

Java繼承的問題引導(dǎo)和測試方法

2. final 修飾的方法不能被覆蓋
3. final 修飾的變量(成員變量和局部變量)必須顯式初始化,且只能初始化一次。

修改 final 局部變量 的取值

public class Test {
	public static void main(String... args) {
    final int temp;
    temp = 1;
    temp = 2;
    }
}

報錯提示:

Java繼承的問題引導(dǎo)和測試方法

final成員變量未顯式初始化

public class Person {
	private final String name;
}

報錯提示:

Java繼承的問題引導(dǎo)和測試方法

4. 常量定義的標準格式

public static final 數(shù)據(jù)類型 常量名=賦值

常量名:大寫字符,如果有多個,用下劃線連接

private 修飾的類成員只能在類的內(nèi)部訪問,這是由面向?qū)ο蟮姆庋b性決定的

“Java繼承的問題引導(dǎo)和測試方法”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI