java语言中的 继承_Java语言有关继承的总结
一、繼承
1、繼承的概念
繼承機制是面向對向程序設計不可缺少的關鍵概念,是實現軟件可重用的根基,是提高軟件系統的可擴張性與可維護性的主要途徑。(它允許創建分等級層次的類)。
繼承是指一個類的定義可以基于另一個已經存在的類,即子類基于父類,從而實現父類代碼的重用,子類能吸收已有類的數據屬性和行為,并能擴張的能力。
2、繼承形式
【訪問權限修飾符】【修飾符】子類名 ?extends 父類名 {子類體} 如下:
public class Father {
public void draw(){
}
}
public class Son extends Father{
public double getDiameter(){
return 0.0;
}
}
3、繼承的作用:代碼的復用
public class Father {--------------父類
public void draw(){
}
}
public class Son extends Father{------------------子類
public double getDiameter(){
return 0.0;
}
}
//演示代碼:子類對象可以直接調用父類的方法,強調復用性
Son s = new Son();
son.draw();
4、繼承的特性
子類擁有父類非private的屬性,方法;
子類可以擁有自己的屬性和方法,即子類可以對父類進行擴展
子類可以用自己的方式實現父類的方法
extends的繼承是單繼承的,就是一個子類只能繼承一個父類
二、構造方法與繼承
1、繼承中構造方法的調用
子類構造方法總是先調用父類的構造方法
默認情況下,調用父類無參構造方法
可在子類構造方法的第一行,使用super關鍵字調用父類任意一個構造方法
2、子類調用父類構造方法的原因
Java 語言中,要求子類有責任保證它所繼承的父類盡快進入到一個穩定、完整的狀態中。如果沒有這個約束,那么子類的某個繼承自父類的方法可能會使用到父類中的一些變量,而這些變量并沒有進行初始化,從而產生一些難以預料的后果。
3、子類構造方法的執行詳解
必須將調用父類構造方法的這條語句放在子類構造方法的第一條語句位置。如果第一條語句沒有調用父類的構造方法,系統將會自動地在這個位置上插入一條調用父類默認構造方法的語句,即super();
由于默認的構造方法不帶參數,所以,如果在父類中定義了帶參數的構造方法,而沒有定義不帶參數的構造方法將會出現編譯錯誤。這也正是建議大家在定義帶參數的構造方法時,一定要定義一個不帶參數的構造方法的原因所在;
父類中那些帶參數的構造方法,子類將不會自動地調用它們,必須人工地將調用它們的語句寫入子類的構造方法中。
4、繼承中累的屬性
在子類中,若沒定義屬性則繼承父類屬性;若定義屬性沒賦值則被重寫為默認值0.
三、this 關鍵詞
1、this關鍵字的用途
this關鍵字代表自身,在程序中主要的用途:
使用this關鍵字在自身構造方法內部引用其他構造方法;
使用this關鍵字代表自身類的對象;
a.直接使用this
b.使用this關鍵字引用成員變量
c.使用this關鍵字引用成員方法
注意:this關鍵字必須放在非靜態方法里面
2、this引用成員變量
在一個類的方法或構造方法內部,可以使用“this. 成員變量名“這樣的格式來引用成員變量名,常常用來區分同名的成員變量和局部變量。
public class Company{
private int a;
public Company (int a){
this.a = a;
}
public int getA(){
return a;
}
public void setA(int a){
this.a = a;
}
3、this引用構造方法
在一個類的構造方法內部,也可以使用this關鍵字引用其他的構造方法,這樣可以降低代碼的重復,也可以是所有的構造方法保持統一,這樣方便以后的代碼修改和維護,也方便代碼的閱讀.
public class Company{
int a;
public Company(){
this(0);
}
public Company(int a){
this.a = a;
}
}
4、this引用成員方法
在一個類的內部,成員方法之間的互相調用是也可以使用"this . 方法名(參數)"來進行引用.
public class Company{
Company instance;
public void sell(){
System.out.println("sellSoft");
}
public void doSell(){
this.sell();
}
}
5、this代表自身對象
在一個類的內部,也可以使用this代表自身類的對象,或者換句話說,每個類內不都有一個隱含的成員變量,該成員變量的類型的該類的類型,該成員變量的名稱是this
pubilc class Company{
Company instance;
public Company(){
instance = this ;
}
public void test(){
System.out.println(this);
}
}
四、super關鍵字
1、super關鍵字代表父類的引用,在程序中主要的用途
在子類構造方法中要調用父類的構造方法,需要注意:super語句只能出現在子類構造方法體的第一行;
當子類方法體中的局部變量或者子類的成員變量與父類成員變量同名時,即子類局部變量覆蓋父類成員變量時,用“super.成員變量名”來引用父類成員變量;
當子類的成員方法覆蓋了父類的成員方法時,也就是子類和父類有完全相同的方法定義(方法體可以不同),此時,用“super.方法名(參數列表)”的方式訪問父類的方法;
與this的區別,this通常指代當前對象,super通常指代父類。
2、子類構造方法中要調用父類構造方法
在子類構造方法中要調用父類的構造方法,需要注意:super語句只能出現在子類構造方法體的第一行
class Base {
Base() {
System.out.println("Base");
}
}
public class Checket extends Base {
Checket() {
super(); ? ?/ /調用父類的構造方法,一定要放在方法的首個語句
System.out.println("Checket");
}
public static void main(String argv[]) {
. Checket c = new Checket();
}
}
3、super調用父類成員變量或方法
子類中的成員變量或方法與父類中的成員變量或方法同名。因為子類中的成員變量或方法名優先級高,所以子類中的同名成員變量或方法就隱藏了父類的成員變量或方法,但是我們如果想要使用父類中的這個成員變量或方法,就需要用到super。
class Country {
String name;
void value() {
name = "China";
}
}
class City extends Country {
String name;
void value() {
name = "Dalian";
super.value(); ? ?//不調用此方法時,super.name返回的是父類的成員變量的值null
System.out.println(name);
System.out.println(super.name);
}
public static void main(String[] args) {
City c=new City();
c.value();
}.
}
4、this和super
this通常指代當前對象,super通常指代父類對象。
五、方法覆蓋(重寫)
1、方法覆蓋的定義
子類可以重寫父類中某一方法,稱為方法覆蓋,也稱方法重寫,是繼承中非常重要的知識點。如果子類需要修改從父類繼承到的方法體,就可以使用方法覆蓋。
2、方法覆蓋的原則
同名、同參、同返回值、訪問權限不能縮小。
重載再總結:同方法名、參數類型不同(數量,順序,類型)、與返回值無關。
總結
以上是生活随笔為你收集整理的java语言中的 继承_Java语言有关继承的总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Editplus 3添加edtool插件
- 下一篇: 不懂自学还想去大厂?快醒醒吧!