繼承-Inheritance

物件導向程式開發的三個重點,Java是單一繼承  (C++是多重繼承)

  1. 繼承-目的 code reuse
  2. 封裝
  3. 多型

通常是特殊型別 繼承 通用型別

語法
class 子類別名稱 extends 父類別名稱{    }
override overload
覆寫 多載
子類別繼承父類別的屬性跟方法,
然後改寫
相同的 方法名稱,擁有不同的 實作。
class SuperClass{ String str="super str"; void fun(){ System.out.println("super method"); } } class SubClass extends SuperClass{ void fun(){ System.out.println("子類別改寫父類別方法override"); } String newstr="子類別新屬性";
    void newfun(){ System.out.println("子類別的新方法"); }
}
void test();
void test(int i);
void test(char c);
void test(String s, int i);
void test(String s, String s2);

子類別可以new 父類別的型別

物件obj1是子類別,但是只有父類別的屬性跟方法
 SubClass obj1= new SubClass();
 
物件obj1可以轉回子類別obj2
 SubClass obj2=(SubClass) obj1;

Instanceof

<用來判斷類別型態>

class Employee{
    String name;
    String getName(){
        return "name is "+name;
    }
}
class Manager extends Employee{
    String dept;
    String getDept(){
        return "managment dept="+dept;
      
    }
}
class Instanceof{
    static void displayEmployee(Employee e){
        System.out.println(e.getName());       
         if (e instanceof Manager){
            Manager m =(Manager) e ;
            System.out.println(m.getDept());
        }
    }
    public static void main(String[] args){
        Employee stuff1=new Employee();
        stuff1.name="Joseph";
        displayEmployee(stuff1);
        Manager stuff2=new Manager();
        stuff2.name="Grace";
        stuff2.dept="Account";
        displayEmployee(stuff2);
    }
}



留言

這個網誌中的熱門文章

[HTML]標籤-下

論P, NP, NP-Complete, NP-Hard問題

[Python]基礎課程

[系統]解除電腦限制頻寬

[HTML]標籤-上

[AlaSQL] 多data查詢+累計

How to Check the MySQL Version

[SQL Sever] 日期時間

推薦使用的9款編程字體

類別型態 vs 基本型態