本篇文章給大家?guī)?lái)了關(guān)于java的相關(guān)知識(shí),其中主要介紹了關(guān)于面向?qū)ο蟮南嚓P(guān)問(wèn)題,包括了有參構(gòu)造、無(wú)參構(gòu)造、類的繼承、方法的重寫(xiě)和重載等等內(nèi)容,下面一起來(lái)看一下,希望對(duì)大家有幫助。
推薦學(xué)習(xí):《java教程》
構(gòu)造方法
類的構(gòu)造方法是特殊的方法,此方法名稱必須和類名一致,構(gòu)造不能有返回值 不使用void,不能直接調(diào)用,在類對(duì)象實(shí)例化時(shí)自動(dòng)調(diào)用,new 的時(shí)候可以調(diào)用。一般構(gòu)造方法用于類對(duì)象實(shí)例化時(shí)的初始化。如果一個(gè)類沒(méi)有編寫(xiě)構(gòu)造方法,系統(tǒng)自動(dòng)給此類編譯時(shí)添加一個(gè)無(wú)參構(gòu)造方法。如果聲明類編寫(xiě)了構(gòu)造方法,系統(tǒng)不再添加無(wú)參構(gòu)造方法,建議編寫(xiě)完構(gòu)造方法時(shí),最好編寫(xiě)一個(gè)無(wú)參構(gòu)造方法。
無(wú)參構(gòu)造
說(shuō)白了就是沒(méi)有參數(shù)的構(gòu)造方法
概念看不懂舉個(gè)例子就清晰了。
聲明一個(gè)類A
public class A { }
在類A中創(chuàng)建一個(gè)構(gòu)造方法A(),并且打印出一句話
構(gòu)造方法必須和類名一樣
public class A { public A(){ System.out.println("構(gòu)造方法A()"); }}
新建一個(gè)測(cè)試類,并在類中nuw一個(gè)A類的對(duì)象
public class Test { public static void main(String[] args) { A a = new A(); }}
執(zhí)行main方法試試看
構(gòu)造方法相當(dāng)于在new對(duì)象是自動(dòng)使用的方法
有參構(gòu)造
有參構(gòu)造就是有參數(shù)的構(gòu)造方法
在類A中聲明一個(gè)有參數(shù)的構(gòu)造方法,傳入兩個(gè)String類型的參數(shù),a和b
public class A { public A() { } public A(String a, String b) { System.out.println(a + b); }}
在測(cè)試類中new一個(gè)對(duì)象a時(shí)傳入?yún)?shù)
public class Test { public static void main(String[] args) { A a = new A("aaa", "bbb"); }}
執(zhí)行main方法
注意
沒(méi)有構(gòu)造方法的時(shí)候,類中隱藏了一個(gè)無(wú)參構(gòu)造。但是創(chuàng)建一個(gè)有參構(gòu)造,隱藏的無(wú)參構(gòu)造就會(huì)消失。那么以后new對(duì)象就只能帶參數(shù)了。所以在建有參構(gòu)造時(shí)一定要?jiǎng)?chuàng)建一個(gè)無(wú)參構(gòu)造方法放那。
類的繼承
java語(yǔ)言中,類class 是單繼承,多實(shí)現(xiàn)接口。接口interface 是多繼承的。
為什么要繼承呢?因?yàn)樽宇愊胍诟割惖幕A(chǔ)上添加新功能。
子類繼承父類可以繼承父類中的方法和屬性
下面舉例分析:
父類是人,子類是老司機(jī)。
人的特征有:兩只手,兩只眼,兩只腳,會(huì)吃會(huì)喝
老司機(jī)繼承了人類的特征,并且多出了自己會(huì)開(kāi)車這個(gè)功能。
代碼如下:
這是一個(gè)人 類,具有以下屬性和功能。
public class Ren { public final String shou = "兩只手"; public final String jiao = "兩只腳"; public final String yan = "兩只眼"; public void chi() { System.out.println("會(huì)吃"); } public void he() { System.out.println("會(huì)喝"); }}
這是老司機(jī)類,繼承了人類。并且多了個(gè)會(huì)開(kāi)車的功能
public class Siji extends Ren { public void kai() { System.out.println("會(huì)開(kāi)車"); }}
測(cè)試:創(chuàng)建老司機(jī)對(duì)象輸出屬性并調(diào)用方法。
public class Test { public static void main(String[] args) { Siji b = new Siji(); System.out.println(b.jiao); System.out.println(b.shou); System.out.println(b.yan); b.chi(); b.he(); b.kai(); }}
方法重寫(xiě)、重載
重寫(xiě) 覆蓋:方法名,返回類型,形參都一樣。有此種情況的,必須為繼承關(guān)系。
重載:方法名一樣,返回類型,形參個(gè)數(shù),類型不樣的方法,不一定必須是繼承關(guān)系,同一個(gè)類中都可以,比如 構(gòu)造方法重載
重寫(xiě)
因?yàn)樽宇惒粷M意父類的方法所以想把它改一下,這就是子類重寫(xiě)父類的方法。
比如人會(huì)吃會(huì)喝,但是老司機(jī)不喜歡它會(huì)吃這個(gè)功能,想把它改一下,改成會(huì)吃屎。
代碼如下:
老司機(jī)重寫(xiě)人類的chi()方法
方法名一定要一樣
public class Siji extends Ren { public void kai() { System.out.println("會(huì)開(kāi)車"); } public void chi() { System.out.println("會(huì)吃屎"); }}
現(xiàn)在重寫(xiě)運(yùn)行測(cè)試類
重載
有參構(gòu)造和無(wú)參構(gòu)造就是方法重載,一個(gè)類中有兩個(gè)名字一樣的方法,但是他們的返回值類型和參數(shù)類型,參數(shù)個(gè)數(shù)不一樣。
兩個(gè)方法的返回值類型和參數(shù)類型,參數(shù)個(gè)數(shù),只要有一個(gè)不一樣。但是他們方法名一樣,那么兩個(gè)方法就重載。
推薦學(xué)習(xí):《java教程》