什么是繼承(extends)?
繼承是:新定義的類是從已有的類中獲取屬性和方法的現象。 這個已有的類叫做父類, 從這個父類獲取屬性和方法的類叫做子類。
ExtendsDemo1.java
class Car { //汽車
int size; //車體大小
String color; //顏色
}
class Truck extends Car { //貨車
String packingBox; //貨箱
}
繼承的好處
1. 提高了代碼的重用性
2. 讓類和類之間產生了關系, 為多態創造了條件。
繼承(extends)的格式
1. super關鍵字和this的用法相同
2. this代表本類引用, super代表父類引用
3. 當子類和父類出現同名成員的時候, 可以用super 和 this進行區分
SuperDemo.java
class SuperClass {
int i = 10;
}
class SubClass extends SuperClass {
int i = 20;
public void showMessage() {
System.out.printf("super.i = %d, this.i = %d/n", super.i, this.i);
}
}
對從父類繼承過來的方法進行重寫(Override)
1. 當子類中出現與父類一模一樣的方法(返回值, 函數名, 形參)時, 會出現重寫(Override)操作.
OverrideDemo1.java
class SuperClass {
public void speak() {
System.out.println("SuperClass: I am good~");
}
}
class SubClass extends SuperClass {
@Override //@Override表示下面出現的方法會出現重寫操作,由編譯器檢查,如果達不到重寫的條件,就會報錯。一定程度上增加了代碼的安全性
和健壯性
public void speak() {
super.speak();
System.out.println("SubClass: I am excellent~~~");
}
}
2. 在對父類方法進行重寫(Override)操作的時候,子類不允許出現與父類同名同參但是不同返回類型的方法.
OverrideDemo2.java
}
}
class SuperClass {
public void f() {
}
}
class SubClass extends SuperClass {
@Override
public int f() {
return 1;
}
}
3. 子類重寫父類的方法的訪問權限要大于或者等于父類中被重寫的方法
OverrideDemo3.java
public class OverrideDemo3 {
public static void main(String[] args) {
}
}
class SuperClass {
public void f() {
}
}
class SubClass extends SuperClass {
@Override
protected void f() { //把這里的訪問權限改為public即可
}
}
訪問控制符
訪問控制符有:public, protected, default, private
有些需要一點包(package)的知識,所以等到講包的時候再說.
新聞熱點
疑難解答