標籤:
父類(Parent):public class Parent { public String name = "parent 父類屬性"; public void say(){ System.out.println("parent say被調用"+this.getClass()); }}子類(Child):public class Child extends Parent { /** * 屬性只能被隱藏,不能被覆蓋 */ public String name = "child 子類屬性"; public static void main(String[] args) { Child c = new Child();//普通對象 c.say(); Parent p = new Child();//向上轉型 p.say(); /** * 當子類Child和父類Parent都有name屬性時: * c.name = child 子類屬性 * p.name = parent 父類屬性 * 當子類Child沒有name屬性,父類有該屬性時: * c.name = parent 父類屬性 * p.name = parent 父類屬性 */ System.out.println("c.name = " + c.name);//c.name = child System.out.println("p.name = " + p.name);//p.name = parent } /** * 重寫父類方法 */ public void say(){//子類方法一 System.out.println("child say被調用"+this.getClass()); } /** * 重載--子類方法一 * 當子類方法一不存在時, 子類方法二看起來就象是程式員有意覆蓋 say() 的功能, * 但對方法的類型定義卻稍微有些不確切。 * 然而,編譯器此時假定的是程式員有意進行“過載” ,而非“覆蓋”。 */ public void say(int s){//子類方法二 System.out.println("child say被調用"+this.getClass()); } /*** * 方法簽名由方法名稱和一個參數列表(方法的參數的順序和類型)組成, * 當定義兩種或多種具有相同名稱的方法時,就稱作重載。 * 即重載時相同名稱成員的參數列表是不相同的(參數順序和類型)。 * 以下say2三個方法是重載的體現 */ public void say2(){//子類方法三 System.out.println("child say2被調用"); } public void say2(int a){//子類方法四 System.out.println("child say2被調用"); } public int say2(String a){//子類方法五 System.out.println("child say2被調用"); return 0; }}
Java--重載與重寫