super和this的用法

2021-07-04 05:35:37 字數 1523 閱讀 6405

1.super

一般是用於子類呼叫父類的成員和子類的構造函式呼叫父類的建構函式

1.1   super.

在子類的一般方法中可以用super.來呼叫父類的成員變數和成員函式,雖然父類的成員,子類的物件可以直接呼叫,但是當子類方法對父類的方法進行擴充套件時,父類中的方法通過super.可以直接呼叫,然後再擴充想要補充的功能,此時的super.相當於子類的乙個物件,這樣做的好處是可以降低**的耦合度和安全性,增強**復用性.

public class mamal 

}

public class whale extends mamal

}

1.2  super()

只能使用在子類的建構函式中的第一行來呼叫父類的建構函式.建構函式不同於一般的成員函式,必須明確一點,子類中建構函式必須要呼叫父類中的建構函式.乙個類中,如果沒有定義建構函式,那麼實際上它會自動生成乙個無參的隱式的建構函式,如果自己定義了那麼這個無參的隱式的建構函式就會消失,並且對於乙個建構函式,其第一行實際上是一行無參的super()的隱式呼叫方法,同理,如果你自己有定義,那麼這個隱式的會消失,所以,對於父類而言,必須要有乙個建構函式存在,不然編譯會出錯.(如果父類定義了乙個有參的建構函式,此時無參的消失,子類的隱式建構函式的隱式super()就找不到呼叫函式,需要自己定義)

public class pet 	

public pet(int age,string name)

public pet()

}

public class dog extends pet 

}

2.  this指代當前物件,呼叫該方法的物件.

1.1 this

單獨使用時,用來作為乙個返回值,返回型別為乙個類

1.2 this.

在setter函式中,如果形參和成員同名,此時實參的值不會傳遞到呼叫物件的成員上,因為有乙個就近原則,所以為了區別這一情況,用this.指代當前的物件,就可以將實參的值傳遞給物件,當形參和成員變數不同名的時候,一般不需要加this.,實際上,是省略了this..(this.也可在方法中呼叫其他方法,不過不常用,實際上是省略了this.)

public class person 

public person setheight(double height)

}

1.2  this()

用於同一類中不同構造函式呼叫,必須指出,引數必須要相同才能呼叫

public class human 

public human(double weight, double height)

public human(double weight)

public human()

}

this和super的用法總結

class person public void setname string name public person string name class student extends person public void setscore int score 子類空參構造用this 呼叫本類中存在...

super和this的用法JAVA

繼承出現後,在 中的體現 重點在在於成員的體現 1,成員變數。重點明確原理。特殊情況 子父類中定義了一模一樣的成員變數。都存在於子類物件中。如何在子類中直接訪問同名的父類中的變數呢?通過關鍵字 super來完成。super和this的用法很相似。this 代表的是本類的物件的引用。super 代表的...

this和super用法的總結

this和super用法的總結 1 this的作用 1 可以用於在類的構造器中呼叫該類的屬性值,如對引數初始化等 2 在乙個構造器中呼叫另乙個構造器,在構造器中呼叫另乙個構造器,如this 3 this只能用在構造器中,且必須置於首行,否則會提示錯誤 constructor call must be...