顯示具有 Java SE::介面與繼承 標籤的文章。 顯示所有文章
顯示具有 Java SE::介面與繼承 標籤的文章。 顯示所有文章

2015年9月23日 星期三

Composition Implementation

Composition 實作範例:
public interface Car {
    public void start();
}

public abstract class BasicCar {
    public abstract void start();
}

public class Diesel extends BasicCar{
    public void start(){
        System.out.println("Diesel Start....");
    }
}

public class Mobile extends BasicCar{
    public void ignite(){
        System.out.println("Power turn on ...");
    }

    @Override
    public void start() {
        this.ignite();
    }
}

public class Hybrid  implements Car{
    private Diesel die = new Diesel();
    private Mobile m1 = new Mobile();
    
    public void start(){
        die.start();
        m1.ignite();
    }   
}

public class Racing extends Hybrid{
    public void start(){
        super.start();
        System.out.println("Engine is starting.....");
    }
}

public class Demo {
    public static void main(String[] args){
    
        Racing r1 = new Racing();
        r1.start();
    }
}

2015年9月21日 星期一

Java 介面的繼承


public interface Boats {
    public void launch();
}

public interface MotorizedBoat extends Boats{
    public void start();
}

public interface Car {
    public void start();
}

public class BasicCar implements Car{

    @Override
    public void start() {
        Engine e1 = new Engine(){
            public String start(){
                return ("Engine is :" + start());
            }
        };
    }

    private static class Engine {
        public String start(){
            return "Starting ....";
        }
    }  
}

public class AmphibiousCar extends BasicCar implements MotorizedBoat , java.io.Serializable{

    @Override
    public void launch() {
        System.out.println("要行駛了....");
    }   
}

Java 介面的用法

最簡單的介面宣告:
public interface EletronicDevice {
    public void turnOn();
    public void turnOff();
}

使用方式:
public class Television implements EletronicDevice{

    @Override
    public void turnOn() {
        System.out.println("電視機開啟中...");
        initializeScreen();
    }

    @Override
    public void turnOff() {
        initializeScreen();
        System.out.println("電視機關閉中...");
    }
    
    public void changeChannel(int channel){
        System.out.printf("切換至第 %d 台", channel);
    }
    
    private void initializeScreen(){
        System.out.println("清除螢幕視窗....");
    }
}

執行方式:
public class Demo {
    public static void main(String[] args){
        
        EletronicDevice ed = new Television();
        ed.turnOn();

        //介面與類別相同的功能:casting
        ((Television)ed).changeChannel(2); 

        ed.turnOff();
        String s = ed.toString();
        System.out.println(s);
    }
}