ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

接口和抽象类对比 与 案例

2022-06-19 14:00:40  阅读:164  来源: 互联网

标签:play void 拨号 接口 案例 takePhone Override 抽象类 public


接口和抽象类对比 

比较点 抽象类 接口
定义 用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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有