1. 程式人生 > >Java-面向物件(高階篇)--抽象類與介面的應用

Java-面向物件(高階篇)--抽象類與介面的應用

抽象類與介面的應用
一. 抽象類的實際應用——模板設計
通過物件的多型性可以為抽象類例項化,那麼抽象類該如何使用那?假設人分為學生和工人,學生和工人都可以說話,但是說的內容不相同,那麼說話的功能是一樣的,而說的內容由學生和工人自己來決定,此時可以利用抽象類來實現此場景。
【抽象類的實際應用】

abstract class Person
{
    private String name;
    private int age;

    public Person(String name,int age){
        this.name=name;
        this
.age=age; } public String getName(){ return name; } public int getAge(){ return age; } public void say(){ System.out.println(this.getContent()); } public abstract String getContent(); } class Student extends Person { private String school; public
Student(String name,int age,String school){ super(name,age); this.school=school; } public String getContent(){ return "學生資訊:\n姓名:"+super.getName()+"\n年齡:"+super.getAge() +"\n學校:"+this.school; } } class Worker extends Person { private int salary; public
Worker(String name,int age,int salary){ super(name,age); this.salary=salary; } public String getContent(){ return "工人資訊:\n姓名:"+super.getName()+"\n年齡:"+super.getAge() +"\n工資:"+this.salary; } } public class AbstractCaseDemo02 { public static void main(String[] args){ Person a=new Student("張三",20,"ZZU");//向上轉型,例項化抽象類 Person b=new Worker("李四",25,5000); a.say(); b.say(); } }

執行結果為:

學生資訊:
姓名:張三
年齡:20
學校:ZZU
工人資訊:
姓名:李四
年齡:25
工資:5000

從程式執行的結果來看,在Person類中就相當於定義了一個模板,在主方法中呼叫時,呼叫的是普通的方法,而子類只需要是想父類中的抽象方法,就可以取得一個人的具體資訊。
二. 介面的實際應用——指定標準
介面是Java解決多繼承侷限的一種手段,而且從前面的內容讀者也已經清楚可以通過物件的多型性為介面進行例項化,但是介面在實際應用中更多的是用來制定標準。例如,U盤和印表機都可以插在計算機使用,這是因為他們都有USB的介面,對於計算機來說,只要是符合了USB介面標準的裝置都可以插進來。
【制定USB標準】

interface USB   //定義USB介面
{
    public void start();//USB裝置開始工作
    public void stop();//USB裝置停止工作
}
class Computer
{
    public static void plugin(USB usb){//只要是USB的裝置都可以插入
        usb.start();//讓USB裝置開始工作
        System.out.println("========USB裝置工作========");
        usb.stop();//讓USB裝置停止工作
    }
}
class Flash implements USB
{
    public void start(){
        System.out.println("U盤開始工作");

    }
    public void stop(){
        System.out.println("U盤停止工作");
    }
}
class Print implements USB
{
    public void start(){
        System.out.println("印表機開始工作");

    }
    public void stop(){
        System.out.println("印表機停止工作");
    }
}
public class InterfaceCaseDemo02
{
    public static void main(String[] args){
        Computer.plugin(new Flash());//插入U盤
        Computer.plugin(new Print());//插入印表機
    }
}

執行結果為:

U盤開始工作
========USB裝置工作========
U盤停止工作
印表機開始工作
========USB裝置工作========
印表機停止工作

從以上程式可以清楚的發現,介面就是規定了一個標準,計算機認的只是介面,而對於具體的裝置計算機本身並不關心。