繼承-Inheritance
物件導向程式開發的三個重點,Java是單一繼承 (C++是多重繼承)
- 繼承-目的 code reuse
- 封裝
- 多型
通常是特殊型別 繼承 通用型別
語法 |
---|
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); } }
留言
張貼留言