Casos relacionados con clases abstractas e interfaces en Java

1. Código y representaciones

1.Caso Usb

Caso: Interfaz: Usb, clase de implementación: ventilador eléctrico UFan y disco USB UDisk, hay un método de servicio en la interfaz y la clase de implementación lo implementa.

El código es el siguiente (ejemplo):

package work2;

public class TestU {
    
    
    public static void main(String[] args) {
    
    
        Usb u = new UDisk();
            u.service();
        u= new UFan();
            u.service();
    }
}

package work2;

public class UDisk implements Usb {
    
    
    @Override
    public void service() {
    
    
        System.out.println("u盘开始工作,传输数据中。。。。。");
    }
}

package work2;

public class UFan implements Usb {
    
    
    @Override
    public void service() {
    
    
        System.out.println("usb电风扇开始工作,为主人服务");
    }
}

package work2;

public interface Usb {
    
    
    void service();
}

Inserte la descripción de la imagen aquí

2. Caja de la puerta

Caso: La puerta abstracta tiene dos métodos abstractos, cerrar y abrir; la cerradura de interfaz también tiene dos métodos abstractos, lockUp y openLock; la clase de puerta antirrobo TheftproofDoor hereda la puerta e implementa el método abstracto de la interfaz de cerradura (4 en total )). Escriba una clase de prueba y llame a los cuatro métodos abstractos reescritos por la puerta de seguridad.
El código es el siguiente (ejemplo):

package work3;

public abstract class Door {
    
    
    abstract void close();
    abstract void open();
}

package work3;

public interface Lock {
    
    
    void lockUp();
    void openLock();
}

package work3;

public class TestDoor {
    
    
    public static void main(String[] args) {
    
    
        TheftProofDoor td = new TheftProofDoor();
        td.close();
        td.lockUp();
        td.openLock();
        td.open();
    }
}

package work3;

public class TheftProofDoor extends Door implements Lock{
    
    
    @Override
    void close() {
    
    
        System.out.println("门关了,请走");
    }

    @Override
    void open() {
    
    
        System.out.println("门开了,请进");
    }

    @Override
    public void lockUp() {
    
    
        System.out.println("锁上了");
    }

    @Override
    public void openLock() {
    
    
        System.out.println("开锁了");
    }

}

Inserte la descripción de la imagen aquí

3. Mejora la caja de la puerta

Carcasa: agregue la interfaz de timbre DoorBell a la carcasa de la puerta, con un método abstracto de takePictures; la clase de puerta antirrobo implementa la interfaz de timbre, escribe una clase de prueba y llama al método de anulación.
El código es el siguiente (ejemplo):

package work4;

public interface Bell {
    
    
    void takePicture();
}

package work4;

public abstract class Door {
    
    
    abstract void close();
    abstract void open();
}

package work4;

public interface Lock {
    
    
    void lockUp();
    void openLock();
}

package work4;

public class TestDoor {
    
    
    public static void main(String[] args) {
    
    
        TheftProofDoor td = new TheftProofDoor();
        td.close();
        td.lockUp();
        td.openLock();
        td.open();
        td.takePicture();
    }
}

package work4;

public class TheftProofDoor extends Door implements Lock, Bell {
    
    
    @Override
    void close() {
    
    
        System.out.println("门关了,请走");
    }

    @Override
    void open() {
    
    
        System.out.println("门开了,请进");
    }

    @Override
    public void lockUp() {
    
    
        System.out.println("锁上了");
    }

    @Override
    public void openLock() {
    
    
        System.out.println("开锁了");
    }


    @Override
    public void takePicture() {
    
    
        System.out.println("咔嚓,拍照存档了");
    }
}

4. Caja de la impresora

Caso: Defina la interfaz de papel y la interfaz de la caja de tinta. Hay papel A4 y papel B5 para realizar la interfaz de papel, y cartuchos de tinta en blanco y negro y cartuchos de tinta de color para realizar la interfaz de la caja de tinta. Defina la clase de impresora, los atributos de los miembros son dos interfaces, el método de configuración correspondiente y el método de impresión de impresión. Cree una clase de prueba para lograr:
1. Utilice cartuchos de tinta en blanco y negro para imprimir en papel A4
2. Utilice cartuchos de tinta de color para imprimir en papel B5

El código es el siguiente (ejemplo):

package work5;

public class A4Paper implements Paper {
    
    
    @Override
    public String getSize() {
    
    
        return "A4";
    }
}

package work5;

public class B5Paper implements Paper {
    
    
    @Override
    public String getSize() {
    
    
        return "B5";
    }
}

package work5;

public class BlackBok implements InkBok {
    
    
    @Override
    public String getColor() {
    
    
        return "黑白";
    }
}

package work5;

public class ColorBox implements InkBok {
    
    
    @Override
    public String getColor() {
    
    
        return "彩色";
    }
}

package work5;

public interface InkBok {
    
    
   String getColor();
}

package work5;

public interface Paper {
    
    
    String getSize();
}

package work5;

public class Printer {
    
    

    private InkBok inkBok;
    private Paper paper;

    //打印方法
    public void print(){
    
    
        System.out.println("使用"+inkBok.getColor()+"墨盒在"+paper.getSize()+"纸张上打印。");
    }

    //set和get方法
    public InkBok getInkBok() {
    
    
        return inkBok;
    }

    public void setInkBok(InkBok inkBok) {
    
    
        this.inkBok = inkBok;
    }

    public Paper getPaper() {
    
    
        return paper;
    }

    public void setPaper(Paper paper) {
    
    
        this.paper = paper;
    }
}

package work5;

public class TestPrinter {
    
    
    public static void main(String[] args) {
    
    
        //1.创建打印机对象--搬一台打印机过来
        Printer p = new Printer();
        //2.需要A4、B5纸张
        A4Paper a4 = new A4Paper();
        B5Paper b5 = new B5Paper();
        //3.需要彩色、黑白墨盒
        ColorBox color = new ColorBox();
        BlackBok blackBok=new BlackBok();
        //4.组装
        p.setPaper(a4);
        p.setInkBok(blackBok);
        //5.打印
        p.print();
    }
}

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

5. Caja del teléfono móvil

Casos: 1. Descripción de los requisitos: El teléfono móvil original puede enviar mensajes de texto y hablar por teléfono. Con el desarrollo, los teléfonos móviles han agregado funciones de audio, reproducción de video, cámara e Internet. Diseñe el programa de acuerdo con la idea de la tarea 3 y el siguiente diagrama de clases: primero, escriba la clase y la interfaz, consulte el diagrama de estructura de la siguiente clase; segundo, escriba la clase de prueba, deje que el teléfono móvil normal reproduzca audio , envíe mensajes y haga llamadas telefónicas, y deje que el teléfono inteligente se conecte, reproduzca videos, tome fotografías, envíe MMS y videollamadas.
El código es el siguiente (ejemplo):

package work01;

public class AptitudeHandset extends Handset implements Play,Network,TakePicture {
    
    
    @Override
    void sendInfo() {
    
    
        System.out.println("开始发送带图片与文字信息。。。");
    }

    @Override
    void call() {
    
    
        System.out.println("开始视频通话。。。");
    }

    @Override
    public void play(String radio) {
    
    
        System.out.println("开始播放视频《"+radio+"》");
    }

    @Override
    public void netWorkConn() {
    
    
        System.out.println("已经启动移动网络。。。。。。");
    }

    @Override
    public void takePicture() {
    
    
        System.out.println("咔嚓。。。拍照成功");
    }
}

package work01;

public class CommonHandset extends Handset implements Play {
    
    
    @Override
    void sendInfo() {
    
    
        System.out.println("开始发送文字信息。。。");
    }

    @Override
    void call() {
    
    
        System.out.println("开始语音通话。。。");
    }

    @Override
    public void play(String music) {
    
    
        System.out.println("开始播放音乐《"+music+"》");
    }
}

package work01;
// 继承    重写
public abstract class Handset {
    
    
    //属性
    private String brand;
    private String type;
    //属性封装
    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;
    }

    //抽象方法
    abstract void sendInfo();
    abstract void call();

    public void info(){
    
    
        System.out.println("这是一款型号为 "+type+"的 "+brand+"手机");
    }
}

package work01;

public interface Network {
    
    
    void netWorkConn();
}

package work01;

public interface Play {
    
    
    void play(String content);
}

package work01;

public interface TakePicture {
    
    
    void takePicture();
}

package work01;

public class TestHandset {
    
    
    public static void main(String[] args) {
    
    
        //普通手机
        CommonHandset h = new CommonHandset();
        h.setBrand("索尼爱立信");
        h.setType("G502C");
        h.info();
        h.play("热雪");
        h.sendInfo();
        h.call();
        //智能手机
        AptitudeHandset ah = new AptitudeHandset();
        ah.setBrand("I9100");
        ah.setType("HTC");
        ah.info();
        ah.netWorkConn();
        ah.play("小时代");
        ah.takePicture();
        ah.sendInfo();
        ah.call();

    }
}

Inserte la descripción de la imagen aquí

6. Caja de la computadora

Caso: Descripción de los requisitos: Una computadora se ensambla usando ideas de programación orientadas a la interfaz. Los componentes principales de la computadora son: CPU, disco duro y memoria: Primero, defina la CPU de la interfaz de la CPU, devuelva la marca de la CPU y la frecuencia principal; en segundo lugar, definir la interfaz de memoria EMS, devolver la capacidad; nuevamente, definir la interfaz del disco duro HardDisk, devolver la capacidad; luego, escribir cada fabricante de componentes para implementar las interfaces de CPU, EMS y HardDisk, escribir clases de computadora, ensamblar la computadora y mostrar relacionados información; el
código es el siguiente (ejemplo):

package work02.impl;


import work02.Cpu;

public class CpuImpl implements Cpu {
    
    
    @Override
    public String brand() {
    
    
        return "Inter";
    }

    @Override
    public String hz() {
    
    
        return "3.8GHZ";
    }
}

package work02.impl;


import work02.Ems;

public class EmsImpl implements Ems {
    
    
    @Override
    public int size() {
    
    
        return 4;
    }
}

package work02.impl;


import work02.HardDisk;

public class HardDiskImpl implements HardDisk {
    
    
    @Override
    public int size() {
    
    
        return 3000;
    }
}

package work02;

public class Computer {
    
    
    //接口作为成员属性并封装
    private Cpu cpu;
    private Ems ems;
    private HardDisk hardDisk;
    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 getHardDisk() {
    
    
        return hardDisk;
    }
    public void setHardDisk(HardDisk hardDisk) {
    
    
        this.hardDisk = hardDisk;
    }

    public void show(){
    
    
        System.out.println("计算机信息如下:\n Cpu的品牌是:"+cpu.brand()+"  ,主频是:"+cpu.hz()+" \n 硬盘容量是:"+hardDisk.size()+"GB \n " +
                "内存容量是:"+ems.size()+"GB");
    }
}

package work02;

public interface Cpu {
    
    
    String brand();
    String hz();
}

package work02;

public interface Ems {
    
    
    int size();
}

package work02;

public interface HardDisk {
    
    
    int size();
}

package work02;


import work02.impl.CpuImpl;
import work02.impl.EmsImpl;
import work02.impl.HardDiskImpl;

public class TestComputer {
    
    
    public static void main(String[] args) {
    
    
        Computer c = new Computer();
        c.setCpu(new CpuImpl());
        c.setEms(new EmsImpl());
        c.setHardDisk(new HardDiskImpl());
        c.show();
    }
}

Inserte la descripción de la imagen aquí

para resumir

Lo anterior es el contenido completo de las clases abstractas y los casos de interfaz, principalmente utilizando clases abstractas y tecnologías relacionadas con la interfaz para implementar estos casos.

Supongo que te gusta

Origin blog.csdn.net/StruggleBamboo/article/details/111300699
Recomendado
Clasificación