java类继承语法_java类的继承(基础)
---恢復內容開始---
這篇隨筆和大家講講java中類的繼承是什么?希望對你們有所幫助。
目錄
一、java繼承是什么?
二、為什么使用java繼承
三、java繼承的實現
1.1? java繼承的基本語法
1.2? super的用法
一、Java繼承是什么?
簡單來講,Java中的繼承是一個對象獲取父對象的所有屬性和行為的機制。它是面向對象編程系統(OOP)的重要組成部分。Java中繼承的思想是,創建基于現有類的新類。從現有類中繼承,可以重用父類的方法和字段。此外,還可以在當前類中添加新方法和字段
繼承表示IS-A關系,也稱為父子關系。
二·、為什么使用繼承?
繼承就是 比如,你和你的父親,你可以繼承你父親身上的基因,但繼承基因的同時你可以除了繼承你父親基因的同時再創造新的基因,就比如你父親不高,但是你想變高,就可以在基礎的同時使用重寫來改變你的身高。
那為什么要使用繼承呢?
1、可以實現方法重寫(這樣可以實現運行時多態性)。提高了代碼的復用性。
2、繼承允許我們重用代碼,它提高了Java應用程序的可重用性。
三、繼承的實現
1.java繼承的基本語法
1 packagepkg12;2 //Son是子類 ,Father是父類 所以就是子類繼承(extends)父類
3 public class Son extendsFather{4 //方法......
5
6 }
如果要繼承一個類的話,就要使用extends關鍵字
提示:繼承按時著成員在派生類中課訪問,而不是僅僅限于當前定義的類,要在包含基類的包的外部派生一個類,這個基類就必循聲明為public ,如果沒有聲明為public 這個類就不能直接地擴展到包的外部。
2、繼承的特點:
子類會把父類所以的屬性和方法都繼承下來。(先不考慮final)
如果父類包含了共同的屬性和方法,我們可以使用繼承來設計程序
子類使用extends關鍵字繼承父類的共同屬性以外,子類話可以有自己特有的屬性和方法。
父類更通用,子類更具體。
子類只能獲得父類中的非private的屬性,如果想要繼承就得提供公共的set和get的方法,私有的方法是無法繼承的。
用一個習題,來解釋一下什么叫做繼承,代碼如下:
1 packagepkg11;2
3 //定義了一個老師類 同時都有兩個屬性和兩個方法
4 classTeachJava{5 String name;6 intage;7
8 public voidTeachJava(){9 System.out.println(this.name+"在上java課");10 }11 public voidsleep(){12 System.out.println(this.name+"在休息");13 }14 }15
16
17 //定義了二個老師類 同時都有兩個屬性和兩個方法
18 classTeachHtml{19 String name;20 intage;21 public voidTeachHtml(){22 System.out.println(this.name+"在上Html課");23 }24 public voidsleep(){25 System.out.println(this.name+"在休息");26 }27 }28
29
30 public classTextExtends{31 public static voidmain(String args[]){32 //實例化出第一個老師
33 TeachJava tj = newTeachJava();34 tj.name = "張三";35 tj.age = 18;36 tj.TeachJava();37 tj.sleep();38 //實例化出第二個老師
39 TeachHtml th = newTeachHtml();40 th.name = "李四";41 th.age = 34;42 th.TeachHtml();43 th.sleep();44 }45 }
運行效果:
看到我們定義兩個老師類,大家有沒有發現一個問題呢?就是我定義了兩個老師類, 兩個老師類里面發現兩個相同的屬性和一個方法 ,這時我們就可以采用繼承的方式來設計這個案例。
那我們應該怎么設計呢? 遵循上面說到的繼承語法:子類 繼承 父類。
1 packagepkg11;2 //我們可以把相同的屬性和方法放在一個類中,定義為 父類3
4 //父類
5 classTeacher{6 String name;7 intage;8
9 public voidsleep(){10 System.out.println(this.name+"在睡覺");11 }12 }13
14 //子類15
16
17 //子類 繼承 父類
18 class TeachJava extendsTeacher{19 public voidTeachJava(){20 System.out.println(this.name+"在講java課程");21 }22 }23
24 //子類 繼承 父類
25 class TeachHtml extendsTeacher{26
27 public voidTeachHtml(){28 System.out.println(this.name+"在講HTML課程");29 }30 }31
32 public classTextExtends1{33 public static voidmain(String args[]){34 TeachJava tj = newTeachJava();35 tj.name = "張三";//調用父類中的屬性36 tj.age = 20;37 tj.TeachJava();//釣魚自己的方法38 tj.sleep();//調用父類的方法。39 TeachHtml th = newTeachHtml();40 th.name="李四";//調用父類中的屬性41 th.age = 25;42 th.TeachHtml();//調用自己的方法43 th.sleep();//調用父類的方法。44 }
45 }
兩個老師類的中重復的屬性和方法,我沒個把他歸結為一個類當中作為?父類,因為我們繼承的父類的屬性和方法,所以我們就有和父類相同的屬性和方法,所以繼承的最明顯的優點就是減少了代碼的重復性。
這樣繼承和我們之前寫的代碼運行效果會一樣嗎?運行效果如下:
子類只能獲得父類中的非private的屬性,如果想要繼承就得提供公共的set和get的方法,私有的方法是無法繼承的。
這句特點要這樣理解呢? 為什么說要繼承就的使用set和get方法呢?先看代碼:
packagepkg11;//我們可以把相同的屬性和方法放在一個類中,定義為 父類//父類
classTeacher{privateString name;intage;public voidsleep(){
System.out.println(this.name+"在睡覺");
}
}//子類//子類 繼承 父類
class TeachJava extendsTeacher{public voidTeachJava(){
System.out.println(name+"在講java課程");
}
}//子類 繼承 父類
class TeachHtml extendsTeacher{public voidTeachHtml(){
System.out.println(this.name+"在講HTML課程");
}
}public classTextExtends1{public static voidmain(String args[]){
TeachJava tj= newTeachJava();
tj.name= "張三";
tj.age= 20;
tj.TeachJava();
tj.sleep();
TeachHtml th= newTeachHtml();
th.name="李四";
th.age= 25;
th.TeachHtml();
th.sleep();
}
}
在我父類屬性中加了一個private,這樣我們再運行運行程序看看會發生什么?
這里發生了報錯,都在name的報錯,所以上面的特點 說的真是這點私有的方法是無法繼承的。
如果想在繼續繼承父類的話,那么我們就的使用封裝的方法,get和set
1 //父類
2 classTeacher{3 privateString name;4 intage;5
6 //封裝
7 public voidsetName(String name){8 this.name =name;9 }10 public voidgetName(){11 returnname;12 }13 public voidsleep(){14 System.out.println(this.name+"在睡覺");15 }16 }
之后調用方法就可以進行繼承了。1 packagepkg11;2 //我們可以把相同的屬性和方法放在一個類中,定義為 父類3
4 //父類
5 classTeacher{6 privateString name;7 intage;8
9 //封裝
10 public voidsetName(String name){11 this.name =name;12 }13 public voidgetName(){14 returnname;15 }16 public voidsleep(){17 System.out.println(this.name+"在睡覺");18 }19 }20 //子類21 //子類 繼承 父類
22 class TeachJava extendsTeacher{23 public voidTeachJava(){24 System.out.println(this.getName+"在講java課程");25 }26 }27 //子類 繼承 父類
28 class TeachHtml extendsTeacher{29
30 public voidTeachHtml(){31 System.out.println(this.getName()+"在講HTML課程");32 }33 }34 public classTextExtends1{35 public static voidmain(String args[]){36 TeachJava tj = newTeachJava();37 //tj.getName = "張三";
tj.getName("張三");38 tj.age = 20;39 tj.TeachJava();40 tj.sleep();41 TeachHtml th = newTeachHtml();42 //th.getName="李四";
th.getName("李四");43 th.age = 25;44 th.TeachHtml();45 th.sleep();46 }47 }
運行效果:
以上繼承是單一繼承,java還有多極繼承
多級繼承: 在多級繼承中,派生類將繼承基類,并且派生類也充當其他類的基類。在下面的圖像中,類A用作派生類B的基類,后者又用作派生類C的基類。在Java中,類不能直接訪問祖父母的成員。
就是可以繼承多個
packagepkg11;//多極繼承
classA{
}class B extendsA{
}class C extendsB{
}public classTextExtends1{public static voidmain(String args[]){
}
}
運行效果:
但是不支持多繼承,它可以支持繼承多個類,但不支持同時繼承兩個類。
這樣是不支持的
1 packagepkg11;2 //錯誤展示
3
4 classA{5
6 }7
8 classB{9
10 }11
12 class C extendsA,B{13
14 }15
16 public classTextExtends3{17 public static voidmain(String args[]){18
19 }20 }
運行效果:
總結:
繼承的優缺點
優點:1、代碼共享,減少創建類的工作量,每個子類都擁有父類的方法和屬性。
2、提高代碼的重用性,子類可以形似父類,但又異于父類。
3、提高代碼的可擴展性。
缺點:
1、只要繼承,就必須擁有父類的所有屬性和方法;
2、降低代碼的靈活性。子類必須擁有父類的屬性和方法,讓子類多了約束;
3、增強了耦合性,當父類的常量、變量和方法被修改時,需要考慮子類的修改,而且在缺乏規范的環境下,修改可能會造成嚴重的后果。
總結
以上是生活随笔為你收集整理的java类继承语法_java类的继承(基础)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java applet退出功能_java
- 下一篇: java正则表示过滤汉字,Java正则表