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在每個子類別中,都要實作的困擾.


以下是我寫的一個簡單的例子:
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();
}
}

Posted by yam_javanull at 樂多Roodo! │13:06 │回應(2)引用(0)Java
樂多分類:網路/3C 共同主題:程式設計 工具:編輯本文
Ads by Roodo! 

引用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