Clases e interfaces abstractas
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();
}
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("开锁了");
}
}
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();
}
}
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();
}
}
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();
}
}
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.