Java基礎_繼承與重寫
阿新 • • 發佈:2020-12-27
Day_09 super,this關鍵字
一.super關鍵字
1.通過super關鍵字可以使用父類的內容。
2.super代表父類的一個引用物件。
3.如果用super關鍵字,必須出現在呼叫位置第一行。
二.方法的重寫
1.繼承後,子類就擁有了父類的功能。
2.在子類中,可以新增子類特有的功能,也可以修改父類的原有功能。
3.子類中方法與父類完全一致時,會發生覆蓋操作。
4.父類中的私有方法不能被重寫。
5.子類重寫父類方法時,修飾符許可權要大於父類的。
三.成員變數的使用
public class Extends_Variable {
public static void main(String[] args) {
Sub s= new Sub();
s.show();
}
}
class Fu{
int number = 20;
}
class Sub extends Fu{
int number;
public void show() {
int number = 9;
System.out.println(number);//變數的就近原則。
System.out.println(this.number);//呼叫本類的成員變數。
System.out.println( super.number);//呼叫父類的成員變數。
}
}
四.成員方法的使用
public class Extends_Method {
public static void main(String[] args) {
Sub2 s = new Sub2();
s.testShow();//呼叫普通方法。
s.eat();//呼叫重寫方法。
}
}
class Fu2{
public void show() {
System.out.println("爸爸展示");
}
public void eat() {
System. out.println("爸爸吃");
}
}
class Sub2 extends Fu2{
public void testShow() {
super.show();//呼叫父類的方法。
}
public void eat() {//方法的重寫。
System.out.println("兒子吃肉");
}
}
五.構造方法的使用
1.子類建立物件時,預設訪問父類的無參構造方法。
2.在構造方法的第一行有一條預設語句:super()。
3.父類沒有無參構造,可用super呼叫父類其他構造。
六.構造方法的使用
public class Extends_Construct {
public static void main(String[] args) {
Sub3 s = new Sub3();//建立子類物件,在呼叫子類午餐夠早之前,會先去呼叫父類的無參構造。
}
}
class Fu3{
/*public Fu3() {
System.out.println("Fu3的無參構造方法");
}*/
public Fu3(String name) {
System.out.println("Fu3的含參構造方法" + name);
}
}
class Sub3 extends Fu3{
public Sub3() {
super("Yan Dexuan");//呼叫父類的含參構造
System.out.println("Sub3的無參構造方法");
}
/*public Sub3(String name) {
this();//呼叫本類的無參構造。
System.out.println("Sub3的含參構造" + name);
}*/
}
七.this和super的區別
1.this代表對本類物件的引用,super代表父類物件的引用。
2.this用於區分區域性變數和成員變數,super用於區分本類變數和父類變數。
3.this.成員變數,this.成員方法(),this(引數)代表呼叫本類內容。super.成員變數,super.成員方法,super(引數)代表呼叫父類內容。
4.this和super不可同時出現在同一個構造方法中,兩者出現都必須放在構造方法內的第一行,因此不能同時出現。
八.重寫與過載的區別
1.過載:指同一個類中的多個方法具有相同的名字,但這些方法具有不同的引數列表,即引數數量或引數型別不能完全相同。
2.重寫:存在於子類和父類之間,子類定義的方法與父類中的方法具有相同的方法名,相同的引數列表以及相同的返回值型別。
3.重寫是父類與子類之間多型性的一種表現,過載是一類中多型性的一種表現。