August 25,2005
Abstract Class
再參考這兩個連結。。。
http://caterpillar.onlyfun.net/Gossip/JavaGossip-V1/AbstractClass.htm
http://caterpillar.onlyfun.net/Gossip/JavaGossip-V1/InterfaceType.htm
定義上:
Abstract class 表示該類別中可能已經有了一些方法的實作,但是Interface就僅僅只能定義各個方法的規格(Method Signature),不可以有實作的code 在裡面.
用法上:
Abstract class是子類別用來繼承的,當父類別已有實作的method時,該method於子類別中不必實作,但子類別也可以overridd該method.
而在implement 一個Interface的時候,是一定要實作Interface中所定義的所有method,不可遺漏任何一個!! 所以Interface在實作時,我也常寫一個abstract類別,來實作Interface中的某些子類別所需共通使用的method,接著撰寫各個子類別時,即可繼承該Abstract類別來使用,省去共通method在每個子類別中,都要實作的困擾.
http://caterpillar.onlyfun.net/Gossip/JavaGossip-V1/AbstractClass.htm
http://caterpillar.onlyfun.net/Gossip/JavaGossip-V1/InterfaceType.htm
定義上:
Abstract class 表示該類別中可能已經有了一些方法的實作,但是Interface就僅僅只能定義各個方法的規格(Method Signature),不可以有實作的code 在裡面.
用法上:
Abstract class是子類別用來繼承的,當父類別已有實作的method時,該method於子類別中不必實作,但子類別也可以overridd該method.
而在implement 一個Interface的時候,是一定要實作Interface中所定義的所有method,不可遺漏任何一個!! 所以Interface在實作時,我也常寫一個abstract類別,來實作Interface中的某些子類別所需共通使用的method,接著撰寫各個子類別時,即可繼承該Abstract類別來使用,省去共通method在每個子類別中,都要實作的困擾.
以下是我寫的一個簡單的例子:
public interface Animal{
public void speak();
public String getName();
public String getSex();
}
public abstract class Human implements Animal{
public abstract void speak();
public String getName(){
return "Human";
}
public abstract String getSex();
}
public class Man extends Human{
public void speak(){
System.out.println("I am a man!!");
}
public String getSex(){
return "male";
}
}
public class Main{
public static void main(String[] args){
Animal animal = new Man();
System.out.println("Animal Name:"+animal.getName());
System.out.println("Animal Sex:"+animal.getSex());
animal.speak();
}
}
public interface Animal{
public void speak();
public String getName();
public String getSex();
}
public abstract class Human implements Animal{
public abstract void speak();
public String getName(){
return "Human";
}
public abstract String getSex();
}
public class Man extends Human{
public void speak(){
System.out.println("I am a man!!");
}
public String getSex(){
return "male";
}
}
public class Main{
public static void main(String[] args){
Animal animal = new Man();
System.out.println("Animal Name:"+animal.getName());
System.out.println("Animal Sex:"+animal.getSex());
animal.speak();
}
}
引用URL
http://cgi.blog.roodo.com/trackback/409656
回應文章 
引用 java world 的資料
Posted by Roger
at August 25,2005 13:38
嗯咳~標題是Abstract才對,拚錯了呢。
Posted by guestj
at August 26,2005 00:02