繼承-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);
}
}
留言
張貼留言