Java自學筆記(八)
阿新 • • 發佈:2018-11-10
面向物件——繼承
繼承的思想其實很好理解,但是裡面有些東西需要記憶。 理解,繼承可以將之前的類沿襲下來,保留被繼承類的功能。 使用方法:class 類名稱 extends 父類名稱 { …… } 例項:
需要注意,假設有A、B、C三個類, A可以繼承B,同時A也可以繼承C(C可以繼承A,B可以繼承A)但是不能同時繼承B和C (在Python裡面是多繼承的,有它一套順序),另外父類私有的成員變數和私有方法不能繼承,也所以私有方法不能重寫。package storeName; //建立父類(也叫超類) public class storename { String name; void printName() { System.out.println("我是一個商品"); } } //建立子類 package storeName; public class storename2 extends storename { void printMessage() { System.out.println("我很貴的!"); } } //主函式執行 public class storeTest { public static void main(String[] args) { storename2 st = new storename2(); System.out.println(st.name = "黃金"); st.printName(); st.printMessage(); } }
A可以繼承B,同時B可以繼承C,那麼A就是孫子了……
關於重寫 子類和父類的方法是一樣的(包含修飾符和名字以及給定引數等等),重寫(覆蓋)是不同類之間,而過載是對方法的重新描述,給定引數的型別和個數至少有一點不一樣。 在new一個子類之後,如果有同樣的基本型別或者重寫的方法,先執行子類的資料型別賦值和其方法;若同時存在,如果需要強制執行父類的賦值(成員變數),需要使用 super
繼承之抽象類知識點 PS:抽象方法表達方式package storeName; //建立父類(也叫超類) public class storename { String name; int i =6; void printName() { System.out.println("我是一個商品"); } void printJiage( ) { System.out.println("無價之寶23333"); } } //建立子類 package storeName; public class storename2 extends storename { int i = 7; void printMessage() { System.out.println("我很貴的!"); } void printJiage( ) { System.out.println("無價之寶"); } } //主函式執行 public class storeTest { public static void main(String[] args) { storename2 st = new storename2(); System.out.println(i); \\7 st.printName("無價之寶"); \\"無價之寶" } }
public abstract 返回值型別 方法名稱() 抽象類表達方式 abstract class 類名稱{} 抽象方法只能放在抽象類,但是抽象類裡面不一定要抽象方法;抽象類不允許建立物件,畢竟是抽象的……如果需要建立物件,應該在抽象類的子類裡面建立;但是呢,必須重寫抽象類中所有的抽象方法,其子類才能建立物件,否則還是抽象的…… 這裡不得不給出例子來解釋,不然以後自己也會繞暈吧…… 另外,抽象類一定是父類,修飾詞肯定不能是private,final,static
abstract class A{
public abstract void func();
public abstract void func2();
}
class B extends A{//B把A中的兩個抽象方法都重寫
//B類不再是抽象類,可以例項化為物件,注意,例項化過程沒有了關鍵字abstract,可以補充方法體{}
public void func(){}
public void func2(){}
}
abstract class C extends A{//C含有抽象方法的類一定是抽象類
public void func(){
}
//public abstract void func2();//func2相當於被繼承下來
}