第十三天笔记(补)

    科技2022-08-16  111

    接口

    接口的特点:

    JDK1.7

    1.接口中不能有普通属性 默认都是静态常量 不管是否书写 都是public static final修饰

    2.接口中不能有普通方法 默认都是抽象方法 不管是否书写 都是public abstract 修饰

    3.实现类必须重写接口的抽象方法 除非子类是抽象类或者还是接口

    4.接口不能实现接口,可以继承接口,也可以继承多个。

    5.实现类可以实现多个接口

    6.接口不能直接new对象 必须通过new实现类(子类)的方式 创建对象

    JDK1.8+

    1.接口可以写普通方法 使用default关键字 加载访问符之后 返回值之前

    2.可以写静态方法

    package com.qfedu.test4; /** * 手机抽象类 * 本类只提供手机最基本的功能 * 打电话 * 发短信 * @author WHD * */ public abstract class Phone { public abstract void sendMessage(String message); public abstract void call(); } package com.qfedu.test4; /** * 普通手机类 * 一个类需要继承类和实现接口的时候 先继承 后实现 * @author WHD * */ public class CommonPhone extends Phone implements PlayMusic,TakePhoto{ @Override public void sendMessage(String message) { System.out.println("普通手机发信息" + message); } @Override public void call() { System.out.println("普通手机打电话,信号不好"); } @Override public void playMusic(String musicName) { System.out.println("普通手机,音质感人,正在播放" + musicName); } @Override public void take() { System.out.println("100万像素,全景马赛克模式"); } } package com.qfedu.test4; public class SmartPhone extends Phone implements PlayMusic,PlayGame,PlayVideo,TakePhoto,NetWork{ @Override public void sendMessage(String message) { System.out.println("智能手机发送语音短信" + message); } @Override public void call() { System.out.println("智能手机打视频电话"); } @Override public void connect() { System.out.println("智能手机联网,连接世界,连接你我"); } @Override public void take() { System.out.println("咔嚓一下,记录一张CD"); } @Override public void play(String videoName) { System.out.println("智能手机正在播放" + videoName); } @Override public void playGame(String gameName) { System.out.println("智能手机正在玩游戏" + gameName); } @Override public void playMusic(String musicName) { System.out.println("智能手机播放音乐" + musicName); } } package com.qfedu.test4; /** * 联网接口 * @author WHD * */ public interface NetWork { void connect(); } package com.qfedu.test4; /** * 玩游戏接口 * @author WHD * */ public interface PlayGame { void playGame(String gameName); } package com.qfedu.test4; /** * 播放音乐接口 * @author WHD * */ public interface PlayMusic { void playMusic(String musicName); } package com.qfedu.test4; /** * 看片接口 * @author WHD * */ public interface PlayVideo { void play(String videoName); } package com.qfedu.test4; /** * 拍照接口 * @author WHD * */ public interface TakePhoto { void take(); }

    接口使用多态的方式组装打印机

    package com.qfedu.test5; /** * 打印机 * 墨盒 * 彩色 黑白 * 纸张 * A4 B5 * @author WHD * */ public class Printer { private InkBox inkbox; // 墨盒 private Paper paper; // 纸张 public InkBox getInkbox() { return inkbox; } public void setInkbox(InkBox inkbox) { this.inkbox = inkbox; } public Paper getPaper() { return paper; } public void setPaper(Paper paper) { this.paper = paper; } public void print() { System.out.println("使用" + this.getInkbox().getInkBoxType() + "在" + this.getPaper().getPaperSize() + "纸张打印"); } } package com.qfedu.test5; /** * 墨盒接口 相当于规定了 墨盒的规范 * 返回墨盒的类型 * @author WHD * */ public interface InkBox { String getInkBoxType(); } package com.qfedu.test5; /** * 黑白 黑色 墨盒 * @author WHD * */ public class BlackInkbox implements InkBox{ @Override public String getInkBoxType() { return "黑白墨盒"; } } package com.qfedu.test5; public class ColorInkbox implements InkBox { @Override public String getInkBoxType() { return "彩色墨盒"; } } package com.qfedu.test5; /** * 纸张接口 * 获取纸张规格方法 * * @author WHD * */ public interface Paper { String getPaperSize(); } package com.qfedu.test5; public class A4 implements Paper{ @Override public String getPaperSize() { return "A4"; } } package com.qfedu.test5; public class B5 implements Paper{ @Override public String getPaperSize() { return "B5"; } } package com.qfedu.test5; public class Test { public static void main(String[] args) { Printer hp = new Printer(); InkBox color = new ColorInkbox(); hp.setInkbox(color); Paper a4 = new A4(); hp.setPaper(a4); hp.print(); InkBox balck = new BlackInkbox(); Paper b5 = new B5(); hp.setInkbox(balck); hp.setPaper(b5); hp.print(); } }
    Processed: 0.021, SQL: 10