亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java超詳細(xì)講解三大特性之一的繼承

 更新時(shí)間:2022年05月12日 16:04:11   作者:crisp制藥  
繼承就是可以直接使用前輩的屬性和方法。自然界如果沒(méi)有繼承,那一切都是處于混沌狀態(tài)。多態(tài)是同一個(gè)行為具有多個(gè)不同表現(xiàn)形式或形態(tài)的能力。多態(tài)就是同一個(gè)接口,使用不同的實(shí)例而執(zhí)行不同操作

繼承的概念

繼承就是子類(lèi)繼承父類(lèi)的特征和行為,使得子類(lèi)對(duì)象(實(shí)例)具有父類(lèi)的實(shí)例域和方法,或子類(lèi)從父類(lèi)繼承方法,使得子類(lèi)具有父類(lèi)相同的行為。

通過(guò)繼承可以快速創(chuàng)建新的類(lèi),實(shí)現(xiàn)代碼的重用,提高程序的可維護(hù)性,節(jié)省大量創(chuàng)建新類(lèi)的時(shí)間,提高開(kāi)發(fā)效率和開(kāi)發(fā)質(zhì)量。

繼承性的好處:

  • 減少代碼的重復(fù)
  • 提高代碼復(fù)用性
  • 便于功能拓展

?繼承性的格式:class A extends B{}

A:子類(lèi),派生類(lèi),subclass,B: 父類(lèi) ,超類(lèi), 基類(lèi),superclass

體現(xiàn):一旦子類(lèi)A繼承父類(lèi)B之后,子類(lèi)A中就獲取了父類(lèi)B中聲明的所有的屬性和方法,特別的,父類(lèi)中聲明為private的屬性或方法,子類(lèi)繼承父類(lèi)以后,仍然認(rèn)為獲取了父類(lèi)中私有的結(jié)構(gòu),只有因?yàn)榉庋b性的影響,使得子類(lèi)不能直接調(diào)用父類(lèi)的結(jié)構(gòu)而已

子類(lèi)繼承父類(lèi)以后,還可以聲明自己特有的特有的屬性或方法:實(shí)現(xiàn)功能的拓展。而一個(gè)父類(lèi)是可以有多個(gè)子類(lèi)的,java中類(lèi)的單繼承性:一個(gè)類(lèi)只能有一個(gè)父類(lèi),子父類(lèi)是相對(duì)的概念,子類(lèi)直接繼承的父類(lèi),稱(chēng)為:直接父類(lèi),間接繼承的父類(lèi)稱(chēng)為:間接父類(lèi),子類(lèi)繼承父類(lèi)以后,就獲取了直接父類(lèi)以及所有間接父類(lèi)中聲明的屬性和方法

如果我們沒(méi)有顯示的聲明一個(gè)類(lèi)的父類(lèi)的話,則此類(lèi)繼承于java.lang.Object類(lèi),Object類(lèi)是所有java類(lèi)的根父類(lèi)

繼承中需要注意的點(diǎn):

1.子類(lèi)不能選擇性繼承父類(lèi);

2.Java不支持多重繼承,但一個(gè)類(lèi)可以實(shí)現(xiàn)多個(gè)接口,從而克服單繼承的缺點(diǎn);

3.構(gòu)造方法不會(huì)被子類(lèi)繼承,但可以從子類(lèi)中調(diào)用父類(lèi)的構(gòu)造方法。

例如

class teacher{             //聲明一個(gè)teacher類(lèi)為父類(lèi)
	String name;      	   //定義父類(lèi)的成員變量name、age   
	int age;
	void show(){           //定義父類(lèi)成員方法,將成員變量輸出
		System.out.println(name); 	  
		System.out.println(age); 
	}
}
class Student extends teacher {     //聲明一個(gè)Student類(lèi)為子類(lèi)并繼承父類(lèi)
}
public class myfirst {
	public static void main(String[] args) {
	System.out.println("學(xué)生");
	Student student=new Student();     //聲明一個(gè)Student類(lèi)的實(shí)例對(duì)象student
	student.name="Tom";                //子類(lèi)調(diào)用父類(lèi)的成員變量name并賦值
	student.age=19;                    //子類(lèi)調(diào)用父類(lèi)的成員變量age并賦值
	student.show();                    //子類(lèi)調(diào)用父類(lèi)的成員方法show
	}
}

方法的重寫(xiě)

在實(shí)際應(yīng)用當(dāng)中,我們所寫(xiě)的子父類(lèi)的功能是不一樣的,這時(shí)我們就需要重寫(xiě)或隱藏父類(lèi)的該方法。

1重寫(xiě):子類(lèi)繼承父類(lèi)以后,可以對(duì)父類(lèi)中同名同參數(shù)的方法,進(jìn)行覆蓋操作

2應(yīng)用:重寫(xiě)以后,當(dāng)創(chuàng)建子類(lèi)對(duì)象以后,通過(guò)子類(lèi)對(duì)象調(diào)用子父類(lèi)中的同名同參數(shù)的方法時(shí),實(shí)際執(zhí)行的是子類(lèi)重寫(xiě)父類(lèi)的方法

3重寫(xiě)的規(guī)定:

方法的聲明:

權(quán)限修飾符 返回值類(lèi)型 方法名(形參列表)

子類(lèi)中的叫重寫(xiě)的方法,父類(lèi)中的叫被重寫(xiě)的方法,子類(lèi)重寫(xiě)的方法的方法名和形參列表與父類(lèi)被重寫(xiě)的方法的方法名和形參列表相同,子類(lèi)重寫(xiě)的方法的權(quán)限修飾符不小于父類(lèi)被重寫(xiě)的方法的權(quán)限修飾符 特殊情況:子類(lèi)不能重寫(xiě)父類(lèi)中聲明為private權(quán)限的方法

關(guān)于返回值類(lèi)型:

父類(lèi)被重寫(xiě)的方法的返回值類(lèi)型是void,則子類(lèi)重寫(xiě)的方法的返回值類(lèi)型只能是void,父類(lèi)被重寫(xiě)的方法的返回值類(lèi)型是A類(lèi)型,則子類(lèi)重寫(xiě)的方法的返回值類(lèi)型可以是A類(lèi)或A類(lèi)的子類(lèi)

父類(lèi)被重寫(xiě)的方法的返回值類(lèi)型是基本數(shù)據(jù)類(lèi)型(比如:double),則子類(lèi)重寫(xiě)的方法的返回值類(lèi)型必須是相同的

子類(lèi)和父類(lèi)中的同名參數(shù)的方法都必須聲明為非static的才為重寫(xiě),為static的不是重寫(xiě)

例如

class A{
	public void sayHello() {                      //輸出英文歡迎
		System.out.println("Hello,Welcome to Java!!!");
	}
	public void sayBye() {
		System.out.println("GoodBye,everyone");
	}
}
class B extends A {           
    public void sayHello() {                      //輸出中文歡迎  
    	System.out.println("大家好,歡迎學(xué)習(xí)Java?。。?);
    }
}
public class myfirst {
	public static void main(String[] args) {
	B b=new B();                                //創(chuàng)建子類(lèi)B的一個(gè)實(shí)例對(duì)象,使用默認(rèn)構(gòu)造方法
	b.sayHello();                               //調(diào)用子類(lèi)中重寫(xiě)的方法
	b.sayBye();                                 //調(diào)用父類(lèi)中的方法
	}
}

super關(guān)鍵字的使用

super理解為:父類(lèi)的,super可以用來(lái)調(diào)用、屬性、方法、構(gòu)造器

super的使用,我們可以在子類(lèi)的方法或構(gòu)造器中。通過(guò)使用“super.屬性”或“super.方法”的方式,顯式的調(diào)用父類(lèi)中聲明的屬性或方法,但是,通常情況下,我們習(xí)慣省略“super.

特殊情況:當(dāng)子類(lèi)和父類(lèi)中定義了同名的屬性時(shí),我們要想在子類(lèi)中調(diào)用父類(lèi)中聲明的屬性,則必須顯示的使用”super.屬性“的方式,表明調(diào)用的是父類(lèi)中聲明的屬性。當(dāng)子類(lèi)重寫(xiě)了父類(lèi)中的方法之后,我們想在子類(lèi)中的方法中調(diào)用父類(lèi)中被重寫(xiě)的方法時(shí),則必須顯式的使用“super.方法”的方式,表明調(diào)用的是父類(lèi)中被重寫(xiě)的方法。

super調(diào)用構(gòu)造器

我們可以在子類(lèi)的構(gòu)造器中顯式的使用“super(形參列表)”的方式,調(diào)用父類(lèi)中聲明的指定的構(gòu)造器,"super(形參列表)"的使用,必須聲明在子類(lèi)構(gòu)造器的首行,我們?cè)陬?lèi)的構(gòu)造器中,針對(duì)于”this(形參列表)"或super(形參列表)“只能二選一,不能同時(shí)出現(xiàn),在構(gòu)造器的首行,沒(méi)有顯式的聲明”this(形參列表)“或”super(形參列表)“,調(diào)用父類(lèi)中的構(gòu)造器

例如

package first;
class A{
    public String name="張飛";         //添加成員變量
	public void say() {                //添加成員方法say
		System.out.println("我是父類(lèi)A成員方法say");
	}
}
class B extends A{
    public String name="關(guān)羽";         //與父類(lèi)中同名的字段,隱藏父類(lèi)
	public void say(){                 //重寫(xiě)方法say
		super.say();                   //使用super關(guān)鍵字調(diào)用父類(lèi)中的方法
		System.out.println("我是子類(lèi)B成員方法say");
        System.out.println("父類(lèi)的name名字:"+super.name); //使用super關(guān)鍵字訪問(wèn)父類(lèi)中的變量
	}
}
public class myfirst {
	public static void main(String[] args) {
	  B b=new B();                     //創(chuàng)建子類(lèi)的一個(gè)實(shí)例對(duì)象
	  b.say();                         //調(diào)用子類(lèi)中重寫(xiě)的方法
	  System.out.println("子類(lèi)的name名字:"+b.name);   //調(diào)用子類(lèi)中的name
	}
}

總結(jié)

今天學(xué)習(xí)了java中繼承的特性,方法的重寫(xiě),以及super關(guān)鍵字的使用。 

到此這篇關(guān)于Java超詳細(xì)講解三大特性之一的繼承的文章就介紹到這了,更多相關(guān)Java繼承內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java方法簽名為何不包含返回值類(lèi)型

    Java方法簽名為何不包含返回值類(lèi)型

    這篇文章主要介紹了Java方法簽名為何不包含返回值類(lèi)型,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Springboot允許logger.debug輸出日志方式

    Springboot允許logger.debug輸出日志方式

    這篇文章主要介紹了Springboot允許logger.debug輸出日志方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 從底層源碼深入分析Spring的IoC容器的實(shí)現(xiàn)原理

    從底層源碼深入分析Spring的IoC容器的實(shí)現(xiàn)原理

    IoC容器負(fù)責(zé)管理對(duì)象的生命周期和依賴(lài)關(guān)系,大大簡(jiǎn)化了應(yīng)用程序的開(kāi)發(fā)和維,我們這篇文章將會(huì)從底層源碼的角度深入分析Spring的IoC容器實(shí)現(xiàn),探索它的工作原理和關(guān)鍵組件,需要的朋友可以參考下
    2023-07-07
  • springboot jpa 延遲加載問(wèn)題的2種解決

    springboot jpa 延遲加載問(wèn)題的2種解決

    這篇文章主要介紹了springboot jpa 延遲加載問(wèn)題的2種解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 基于zipoutputStream的簡(jiǎn)單使用

    基于zipoutputStream的簡(jiǎn)單使用

    這篇文章主要介紹了基于zipoutputStream的簡(jiǎn)單使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java數(shù)據(jù)結(jié)構(gòu)及算法實(shí)例:漢諾塔問(wèn)題 Hanoi

    Java數(shù)據(jù)結(jié)構(gòu)及算法實(shí)例:漢諾塔問(wèn)題 Hanoi

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)及算法實(shí)例:漢諾塔問(wèn)題 Hanoi,本文直接給出實(shí)現(xiàn)代碼,代碼中包含大量注釋,需要的朋友可以參考下
    2015-06-06
  • SpringMVC異常處理的三種方式小結(jié)

    SpringMVC異常處理的三種方式小結(jié)

    本文主要介紹了SpringMVC異常處理的三種方式小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-09-09
  • 解析Spring Cloud Bus消息總線

    解析Spring Cloud Bus消息總線

    這篇文章主要介紹了Spring Cloud Bus消息總線的介紹及使用,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-10-10
  • 使用shardingsphere對(duì)SQLServer坑的解決

    使用shardingsphere對(duì)SQLServer坑的解決

    本文主要介紹了使用shardingsphere對(duì)SQLServer坑的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • 深入淺出了解happens-before原則

    深入淺出了解happens-before原則

    一提到happens-before原則,就讓人有點(diǎn)“丈二和尚摸不著頭腦”。這個(gè)涵蓋了整個(gè)JMM中可見(jiàn)性原則的規(guī)則,究竟如何理解,把我個(gè)人一些理解記錄下來(lái)。下面可以和小編一起學(xué)習(xí)
    2019-05-05

最新評(píng)論