zoukankan      html  css  js  c++  java
  • java基础---接口(二)

    1.为什么使用接口

    防盗门可以继承门的同时又继承锁吗?不可以

    如何解决这个问题,接口

    2.什么是接口

    语法

    public interface MyInterface {

    public void foo()

    //其他方法

    }

    3.接口特性

    1.接口丌可以被实例化

    2.实现类必须实现接口的所有方法

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

    4.接口中的变量都是静态常量

    5.接口中的方法都是抽象方法

     

    Java单继承多实现

    4.如何使用接口

    Java接口来实现

    1.根据需求设计方法

    2.实现所有方法

    3.用多态的方式使用

     

    编码实现

    举例:

    public interface Usb {

    //接口中的方法必须是抽象方法

    public void service();

    }

     

    public class Usbfan implements Usb {

    @Override

    public void service() {

    // TODO Auto-generated method stub

    System.out.println("风扇实现USB接口");

    }

    }

    public class UsbMouse implements Usb {

    @Override

    public void service() {

    // TODO Auto-generated method stub

    System.out.println("鼠标实现Usb接口");

    }

    }

     

    public class Test {

    public static void main(String[] args) {

    Usbfan uf=new Usbfan();

    uf.service();

    UsbMouse um=new UsbMouse();

    um.service();

    //多态实现

    Usb um1=new  Usbfan();

    um1.service();

    }

    }

    5.接口表示一种能力

    关心实现类有何能力,而不关心实现细节

    面向接口的约定而不考虑接口的具体实现

    练习

    package Demo1;

    public abstract class Door {

    //开门

    public  abstract void open();

    //关门

    public  abstract void close();

    }

     

    package Demo1;

    public interface Lock {

      //开锁

    public void openLock ();

     //关锁

    public void closeLock ();

    }

    package Demo1;

    public interface  Bell{

    //响铃

    public  void ring();

    }

     

     

    package Demo1;

    //防盗门 继承门  实现锁

    public class TheProofDoor extends Door implements Lock,Bell{

    @Override

    public void openLock() {

    // TODO Auto-generated method stub

    System.out.println("开锁...");

    }

    @Override

    public void closeLock() {

    // TODO Auto-generated method stub

    System.out.println("关锁...");

    }

    @Override

    public void open() {

    // TODO Auto-generated method stub

    System.out.println("开门...");

    }

    @Override

    public void close() {

    // TODO Auto-generated method stub

    System.out.println("关门...");

    }

    @Override

    public void ring() {

    // TODO Auto-generated method stub

    System.out.println("响铃");

    }

    }

     

     

    package Demo1;

    public class Test {

    public static void main(String[] args) {

    TheProofDoor tpf=new TheProofDoor();

    tpf.ring();

    tpf.openLock();

    tpf.open();

    tpf.close();

    tpf.closeLock();

    }

    }

     

    防盗门是一个门    is a的关系

    防盗门有一个锁    has a的关系

    能力:上锁、开锁

    练习2

    package demo4;

    public abstract class HandSet {

     private String brand;

     private String  type;

    public HandSet(String brand, String type) {

    super();

    this.brand = brand;

    this.type = type;

    }

    public HandSet() {

    super();

    // TODO Auto-generated constructor stub

    }

    public String getBrand() {

    return brand;

    }

    public void setBrand(String brand) {

    this.brand = brand;

    }

    public String getType() {

    return type;

    }

    public void setType(String type) {

    this.type = type;

    }

     

       //发短信

    public abstract void sendInfo() ;

     

       //打电话

    public abstract void call();

     

    //打印信息

    public abstract void info();

    }

     

     

    package demo4;

    //上网

    public interface NetWork {

    public void conn();

    }

     

    package demo4;

    //播放音乐

    public interface Play {

    public void play(String content);

    }

     

    package demo4;

    //拍照片

    public interface TakingPictures {

    public void takingPictures();

    }

     

     

    package demo4;

    //普通手机 继承父类,实现播放音乐的接口

    public class CommonHandSet extends HandSet implements Play {

    @Override

    public void play(String content) {

    // TODO Auto-generated method stub

    System.out.println("播放"+content);

    }

    @Override

    public void sendInfo() {

    // TODO Auto-generated method stub

    System.out.println("发送信息");

    }

    @Override

    public void call() {

    // TODO Auto-generated method stub

    System.out.println("打电话");

    }

    @Override

    public void info() {

    // TODO Auto-generated method stub

    System.out.println("手机品牌"+super.getBrand());

    System.out.println("手机的型号"+super.getType());

    }

    }

     

    package demo4;

    //智能手机 实现 上网 拍照

    public class SmartHandSet extends HandSet implements NetWork,TakingPictures {

    @Override

    public void takingPictures() {

    // TODO Auto-generated method stub

    System.out.println("拍照");

    }

    @Override

    public void conn() {

    // TODO Auto-generated method stub

    System.out.println("上网");

    }

    @Override

    public void sendInfo() {

    // TODO Auto-generated method stub

    System.out.println("发送信息");

    }

    @Override

    public void call() {

    // TODO Auto-generated method stub

    System.out.println("打电话");

    }

    @Override

    public void info() {

    // TODO Auto-generated method stub

    // TODO Auto-generated method stub

    System.out.println("手机品牌"+super.getBrand());

    System.out.println("手机的型号"+super.getType());

    }

    }

     

    package demo4;

    public class Test {

    public static void main(String[] args) {

     CommonHandSet common=new CommonHandSet();

     common.call();

     common.sendInfo();

     common.play("学猫叫");

     System.out.println("********************");

     SmartHandSet shs=new SmartHandSet();

     shs.setBrand("三星 Galaxy S9");

     shs.setType("128G");

     shs.call();

     shs.sendInfo();

     shs.takingPictures();

     shs.conn();

     shs.info();

    }

    }

    练习3

    package demo5;

      /*

       *

       * 纸厂

       *

       * *

    public interface Paper {

    public String getSize();

    }

    package demo5;

    public class A4Paper implements Paper{

    @Override

    public String getSize() {

    // TODO Auto-generated method stub

    return "A4";

    }

    }

     

     

    package demo5;

    public class B5Paper implements Paper{

    @Override

    public String getSize() {

    // TODO Auto-generated method stub

    return "B5";

    }

    }

     

    package demo5;

    public interface InkBox {

    /*

     * 墨盒厂

     * */

    public String getColor();

    }

     

     

    package demo5;

    public class BlackAndWhiteInkBox implements InkBox{

    @Override

    public String getColor() {

    // TODO Auto-generated method stub

    return "黑白墨盒";

    }

    }

     

    package demo5;

    public class ColorInkBox implements InkBox{

    @Override

    public String getColor() {

    // TODO Auto-generated method stub

    return "彩色墨盒";

    }

    }

     

    package demo5;

       /*

        *

        * 打印

        * 组装

        *

        *

        * */

     

    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 Printer(InkBox inkBox, Paper paper) {

    super();

    this.inkBox = inkBox;

    this.paper = paper;

    }

    public Printer() {

    super();

    // TODO Auto-generated constructor stub

    }  

    //打印

         public void work(){

          System.out.println("墨盒颜色:"+inkBox.getColor()+"纸张大小:"+paper.getSize());

         }     

    }

     

     

     

    package demo5;

    public class Test {

    public static void main(String[] args) {

    //初始化打印机 打印机需要 墨盒和纸张

    Printer printer=new Printer();

    //黑白墨盒

    InkBox heibai=new  BlackAndWhiteInkBox();

    InkBox caise=new ColorInkBox();

    //

    Paper a4=new A4Paper();

    Paper b5=new B5Paper();

    //打印

    printer.setInkBox(caise);

    printer.setPaper(a4);

    printer.work();

    }

    }

     

    练习

    package demo6;

    public interface CPU {

    public String getCpu();

    }

     

    package demo6;

    public class AmdCpu implements CPU {

    @Override

    public String getCpu() {

    // TODO Auto-generated method stub

    return  "型号:AMD/主频:3.8GHZ";

    }

    }

     

     

    package demo6;

    public class InterCpu implements CPU {

    @Override

    public String getCpu() {

    // TODO Auto-generated method stub

    return "品牌:酷睿;主频:4.3GHZ";

    }

    }

     

     

    package demo6;

    public interface EMS {

    public String getEms();

    }

     

    package demo6;

    public class EMS4G implements EMS{ 

    @Override

    public String getEms() {

    // TODO Auto-generated method stub

    return  "4G内存";

    }

    }

     

    package demo6;

    public class EMS8G implements EMS{

    @Override

    public String getEms() {

    // TODO Auto-generated method stub

    return "8G内存";

    }

    }

     

     

    package demo6;

    public interface HardDisk {

    //返回大小

    public String getHardDisk();

    }

     

    package demo6;

    public class KingstonHardDisk implements HardDisk{

    @Override

    public String getHardDisk() {

    // TODO Auto-generated method stub

    return "金士顿-1T机械硬盘,128G SSD";

    }

    }

     

     

    package demo6;

    public class SanHardDisk implements HardDisk{

    @Override

    public String getHardDisk() {

    // TODO Auto-generated method stub

    return "三星-2T机械硬盘,256G SSD";

    }

    }

     

     

    package demo6;

    public class Computer {

     private CPU cpu;

     private EMS ems;

     private HardDisk hd;

    public CPU getCpu() {

    return cpu;

    }

    public void setCpu(CPU cpu) {

    this.cpu = cpu;

    }

    public EMS getEms() {

    return ems;

    }

    public void setEms(EMS ems) {

    this.ems = ems;

    }

    public HardDisk getHd() {

    return hd;

    }

    public void setHd(HardDisk hd) {

    this.hd = hd;

    }

    public Computer(CPU cpu, EMS ems, HardDisk hd) {

    super();

    this.cpu = cpu;

    this.ems = ems;

    this.hd = hd;

    }

    public Computer() {

    super();

    // TODO Auto-generated constructor stub

    }

    public void produce() {

    System.out.println("cpu="+cpu.getCpu());

    System.out.println("硬盘="+hd.getHardDisk());

    System.out.println("内存="+ems.getEms());

    }  

    }

     

     

    package demo6;

    public class Test {

    public static void main(String[] args) {

    //new 一个对象

    Computer com=new Computer();

    //初始化cpu

    CPU intel=new InterCpu();

    CPU amd=new AmdCpu();

    //硬盘

    HardDisk sanxing=new SanHardDisk();

    HardDisk kingston=new KingstonHardDisk();

    //内存

    EMS   ems4g=new EMS4G();

    EMS   ems8g=new EMS8G();

    //组装电脑

    com.setCpu(intel);

    com.setHd(kingston);

    com.setEms(ems8g);

    com.produce();

    }

    }

  • 相关阅读:
    课后作业5
    类与对象动手动脑
    动手动脑
    找“水王”
    NABCD
    第七周学习进度
    web网页四则运算
    二维数组最大联通子数组求和
    第六周学习进度
    环状数组最大子数组求和
  • 原文地址:https://www.cnblogs.com/-lyr/p/9602543.html
Copyright © 2011-2022 走看看