構(gòu)成方法的特點(diǎn)?
在執(zhí)行的時(shí)候,無(wú)參構(gòu)造方法會(huì)自動(dòng)生成,但是如果類(lèi)中有了有參構(gòu)造方法,則不會(huì)自動(dòng)生成。推薦在寫(xiě)類(lèi)的時(shí)候?qū)⒂袇⒑蜔o(wú)參構(gòu)造方法都寫(xiě);在我們執(zhí)行的時(shí)候,new對(duì)象時(shí),對(duì)象名后面括號(hào)[ Dog dog = new Dog() ] 里面可以有的參數(shù)類(lèi)型必須符合類(lèi)中已聲明的有參構(gòu)造方法
public Dog(){
System.out.println("Dog無(wú)參構(gòu)造方法....");
this.name="二哈";
}
public Dog(String n,int h,int love){
System.out.println("有參構(gòu)造方法....");
this.name=n;
this.health=h;
this.love=love;
}
測(cè)試
Dog dog = new Dog();
Dog dog2= new Dog("二哈",89,100);
方法重載
在同一個(gè)類(lèi)里面方法名相同,參數(shù)列表(方法參數(shù)的個(gè)數(shù)或參數(shù)類(lèi)型)不同,稱之為 方法重載 方法重載與方法返回值和方法修飾符沒(méi)有任何關(guān)系
封裝
封裝是面向?qū)ο笕筇卣髦唬硗鈨蓚€(gè)是繼承和多態(tài)),它指的是將對(duì)象的狀態(tài)信息隱藏在對(duì)象內(nèi)部,不允許外部程序直接訪問(wèn)對(duì)象的信息,而是通過(guò)該類(lèi)所提供的方法來(lái)實(shí)現(xiàn)對(duì)內(nèi)部的操作和訪問(wèn)。
步驟
1.將屬性私有化 設(shè)為private
2.編寫(xiě)setter方法,針對(duì)用戶輸入的值進(jìn)行判斷
3.編寫(xiě)getter方法來(lái)獲取值
注:
面向?qū)ο笕齻€(gè)特征:封裝、繼承、多態(tài)。
繼承:如果多個(gè)類(lèi)的某個(gè)部分的功能相同,那么可以抽象出一個(gè)類(lèi)出來(lái),把他們的相同部分都放到父類(lèi)里,讓他們都繼承這個(gè)類(lèi)。
實(shí)現(xiàn):如果多個(gè)類(lèi)處理的目標(biāo)是一樣的,但是處理的方法方式不同,那么就定義一個(gè)接口,也就是一個(gè)標(biāo)準(zhǔn),讓他們的實(shí)現(xiàn)這個(gè)接口,各自實(shí)現(xiàn)自己具體的處理方法來(lái)處理那個(gè)目標(biāo)
第一、聯(lián)系
繼承父類(lèi)和實(shí)現(xiàn)接口都能實(shí)現(xiàn)代碼重用,提高開(kāi)發(fā)效率。提現(xiàn)了實(shí)物的傳遞性,繼承關(guān)系達(dá)到復(fù)用的目的。
第二、區(qū)別
1、修飾不同
不同的修飾符修飾;實(shí)現(xiàn):implements,繼承:extends;
2、數(shù)量不同
Java只支持“接口”的多繼承,不支持“類(lèi)“”的多繼承;而繼承在java中具有單根性,子類(lèi)只能繼承一個(gè)父類(lèi)。
總結(jié)為:?jiǎn)卫^承,多實(shí)現(xiàn)。
3、屬性不同
在接口中只能定義全局常量(static final),和無(wú)實(shí)現(xiàn)的方法;而在繼承中可以定義屬性方法,變量,常量等...
4、調(diào)用不同
某個(gè)接口被類(lèi)實(shí)現(xiàn)時(shí),在類(lèi)中一定要實(shí)現(xiàn)接口中的抽象方法;而繼承想調(diào)用那個(gè)方法就調(diào)用那個(gè)方法,毫無(wú)壓力