溫馨提示×

溫馨提示×

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

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

Java繼承的概念是什么及怎么用

發(fā)布時間:2022-05-13 09:13:21 來源:億速云 閱讀:149 作者:iii 欄目:開發(fā)技術

這篇文章主要講解了“Java繼承的概念是什么及怎么用”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java繼承的概念是什么及怎么用”吧!

    繼承的概念

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

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

    繼承性的好處:

    • 減少代碼的重復

    • 提高代碼復用性

    • 便于功能拓展

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

    A:子類,派生類,subclass,B: 父類 ,超類, 基類,superclass

    體現(xiàn):一旦子類A繼承父類B之后,子類A中就獲取了父類B中聲明的所有的屬性和方法,特別的,父類中聲明為private的屬性或方法,子類繼承父類以后,仍然認為獲取了父類中私有的結構,只有因為封裝性的影響,使得子類不能直接調用父類的結構而已

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

    如果我們沒有顯示的聲明一個類的父類的話,則此類繼承于java.lang.Object類,Object類是所有java類的根父類

    繼承中需要注意的點:

    1.子類不能選擇性繼承父類;

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

    3.構造方法不會被子類繼承,但可以從子類中調用父類的構造方法。

    例如

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

    方法的重寫

    在實際應用當中,我們所寫的子父類的功能是不一樣的,這時我們就需要重寫或隱藏父類的該方法。

    1重寫:子類繼承父類以后,可以對父類中同名同參數(shù)的方法,進行覆蓋操作

    2應用:重寫以后,當創(chuàng)建子類對象以后,通過子類對象調用子父類中的同名同參數(shù)的方法時,實際執(zhí)行的是子類重寫父類的方法

    3重寫的規(guī)定:

    方法的聲明:

    權限修飾符 返回值類型 方法名(形參列表)

    子類中的叫重寫的方法,父類中的叫被重寫的方法,子類重寫的方法的方法名和形參列表與父類被重寫的方法的方法名和形參列表相同,子類重寫的方法的權限修飾符不小于父類被重寫的方法的權限修飾符 特殊情況:子類不能重寫父類中聲明為private權限的方法

    關于返回值類型:

    父類被重寫的方法的返回值類型是void,則子類重寫的方法的返回值類型只能是void,父類被重寫的方法的返回值類型是A類型,則子類重寫的方法的返回值類型可以是A類或A類的子類

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

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

    例如

    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("大家好,歡迎學習Java!?。?quot;);
        }
    }
    public class myfirst {
    	public static void main(String[] args) {
    	B b=new B();                                //創(chuàng)建子類B的一個實例對象,使用默認構造方法
    	b.sayHello();                               //調用子類中重寫的方法
    	b.sayBye();                                 //調用父類中的方法
    	}
    }

    super關鍵字的使用

    super理解為:父類的,super可以用來調用、屬性、方法、構造器

    super的使用,我們可以在子類的方法或構造器中。通過使用“super.屬性”或“super.方法”的方式,顯式的調用父類中聲明的屬性或方法,但是,通常情況下,我們習慣省略“super.

    特殊情況:當子類和父類中定義了同名的屬性時,我們要想在子類中調用父類中聲明的屬性,則必須顯示的使用”super.屬性“的方式,表明調用的是父類中聲明的屬性。當子類重寫了父類中的方法之后,我們想在子類中的方法中調用父類中被重寫的方法時,則必須顯式的使用“super.方法”的方式,表明調用的是父類中被重寫的方法。

    super調用構造器

    我們可以在子類的構造器中顯式的使用“super(形參列表)”的方式,調用父類中聲明的指定的構造器,"super(形參列表)"的使用,必須聲明在子類構造器的首行,我們在類的構造器中,針對于”this(形參列表)"或super(形參列表)“只能二選一,不能同時出現(xiàn),在構造器的首行,沒有顯式的聲明”this(形參列表)“或”super(形參列表)“,調用父類中的構造器

    例如

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

    感謝各位的閱讀,以上就是“Java繼承的概念是什么及怎么用”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對Java繼承的概念是什么及怎么用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

    向AI問一下細節(jié)

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

    AI