其他分享
首页 > 其他分享> > 接口和抽象类对比 与 案例

接口和抽象类对比 与 案例

作者:互联网

接口和抽象类对比 

比较点 抽象类 接口
定义 用abstract关键字来修饰的类  interface关键字修饰的类
组成 抽象方法,普通方法,构造方法,成员变量,常量 抽象方法,静态常量,JDK1.8注意
使用 子类继承(extends) 实现类实现(implements)
关系 抽象类可以实现接口 接口不能继承抽象类
对象 通过对象的多态类实现 通过对象的多态类实现
局限 不能多继承,不能实例化 可以多继承,不能实例化
选择 建议选择接口,避免单继承 建议选择接口,避免单继承
实际 模板 标准

 

 

 

 

 

 

 

 

 

 

 

案例

要求如下:

(1)所有的可以拨号的设备都应该有拨号功能(Dailup)

(2)所有的播放设备都可以有播放功能(Play)。

(3)所有的照相设备都有拍照功能(takePhatg)。

(4)定义一个电话类Telephone,有拨号功能。

(5)定义一个Dwd类有播放功能。

(6)定义一个照相机类Camera,有照相功能。

(7)定义一个手机类Mobile,有拨号,拍照,播放功能。

(8)定义一个人类Person,有如下方法:

  <1>使用拨号设备use(拨号设备)

  <2>使用拍照设备use(拍照设备)

  <3>使用播放设备use(播放设备)

  <4>使用拨号播放拍照设备use(拨号播放拍照设备)

(9)编写测试类Test分别创建人,电话,Dvd,照相机,手机对象,让人使用这些对象

/**
 * 拨号
 */
public interface IDailup {
    void dailup();
}
/**
 * 播放功能
 */
public interface IPlay {
    void play();
}
/**
 *拍照
 */
public interface ITakePhone {
   void takePhone();
}
/**
 * 拨号
 */
public class TakePhone implements IDailup{
    @Override
    public void dailup() {
        System.out.println("电话拨号中...");
    }
}
/**
 * 播放功能
 */
public class Dvd implements IPlay{
    @Override
    public void play() {
        System.out.println("DVD播放中....");
    }
}
/**
 * 拍照
 */
public class Camera implements ITakePhone{
    @Override
    public void takePhone() {
        System.out.println("照相机拍照");
    }
}
/*
接口手机类
 */
public interface IMobile extends IDailup,IPlay,ITakePhone{

}
public class Mobile implements IMobile{
    @Override
    public void dailup() {
        System.out.println("手机拨号");
    }

    @Override
    public void play() {
        System.out.println("手机播放");
    }

    @Override
    public void takePhone() {
        System.out.println("手机照相");
    }
}
public class Person implements IPerson{
    @Override
    public void user(IDailup dailup) {
        dailup.dailup();
    }

    @Override
    public void user(IPlay play) {
        play.play();
    }

    @Override
    public void user(ITakePhone takePhone) {
        takePhone.takePhone();
    }

    @Override
    public void user(IMobile mobile) {
        mobile.dailup();
        mobile.play();
        mobile.takePhone();
    }
}

测试:

public class Test {
    public static void main(String[] args) {
        IPerson person = new Person();
        //电话
        IDailup telephone = new TakePhone();
        //Dvd
        IPlay play = new Dvd();
        //照相机
        ITakePhone takePhone = new Camera();
        //手机对象
        IMobile mobile = new Mobile();

        person.user(telephone);
        person.user(play);
        person.user(takePhone);
        System.out.println("-----------");
        person.user(mobile);

    }
}

 

 

 

 

 

搜索

复制

标签:play,void,拨号,接口,案例,takePhone,Override,抽象类,public
来源: https://www.cnblogs.com/pengtianyang/p/16390416.html