抽象クラスとインターフェース
1.コードとレンダリング
1.USBケース
ケース:インターフェース:Usb、実装クラス:電動ファンUFanおよびUSBディスクUDisk、インターフェースにサービスメソッドがあり、実装クラスがそれを実装します。
コードは次のとおりです(例):
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.ドアケース
ケース:抽象ドアにはcloseとopenの2つの抽象メソッドがあり、インターフェイスロックにはlockUpとopenLockの2つの抽象メソッドもあります。盗難防止ドアクラスTheftproofDoorはドアを継承し、ロックインターフェイスの抽象メソッドを実装します(合計4つ)。 ))。テストクラスを作成し、セキュリティドアによって書き直された4つの抽象メソッドを呼び出します。
コードは次のとおりです(例):
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.ドアケースをアップグレードします
ケース:takePicturesの抽象的なメソッドを使用して、ドアベルインターフェイスDoorBellをドアケースに追加します。盗難防止ドアクラスはドアベルインターフェイスを実装し、テストクラスを記述して、オーバーライドメソッドを呼び出します。
コードは次のとおりです(例):
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.プリンターケース
ケース:用紙インターフェース用紙とインクボックスインターフェースを定義します。用紙インターフェースを実現するためのA4用紙とB5用紙、およびインクボックスインターフェースを実現するための白黒インクカートリッジとカラーインクカートリッジがあります。プリンタクラスを定義し、メンバー属性は2つのインターフェイス、対応するsetメソッド、およびprintメソッドprintです。次のことを実現するためのテストクラスを作成します
。1。白黒インクカートリッジを
使用してA4用紙に印刷します。2。カラーインクカートリッジを使用します。 B5用紙に印刷するには
コードは次のとおりです(例):
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.携帯電話ケース
ケース:1。要件の説明:元の携帯電話はテキストメッセージを送信し、電話で話すことができます。開発に伴い、携帯電話にはオーディオ、ビデオ再生、カメラ、インターネット機能が追加されました。宿題3と次のクラス図のアイデアに従ってプログラムを設計します:最初に、クラスとインターフェイスを記述し、次のクラスの構造図を参照します;次に、テストクラスを記述し、通常の携帯電話にオーディオを再生させます、メッセージを送信して電話をかけ、スマートフォンをオンラインにし、ビデオを再生し、写真を撮り、MMSとビデオ通話を送信します。
コードは次のとおりです(例):
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.コンピュータケース
ケース:要件の説明:コンピューターは、インターフェイス指向プログラミングのアイデアを使用して組み立てられます。コンピューターの主なコンポーネントは、CPU、ハードディスク、およびメモリです。まず、CPUインターフェイスCPUを定義し、CPUブランドとメイン周波数を返します。次に、メモリインターフェイスEMSを定義し、容量を返します。ここでも、ハードディスクインターフェイスHardDiskを定義し、容量を返します。次に、CPU、EMS、およびHardDiskインターフェイスを実装する各コンポーネントの製造元を作成し、コンピュータクラスを作成し、コンピュータを組み立てて、関連するディスプレイを表示します。情報;
コードは次のとおりです(例):
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();
}
}
総括する
上記は、抽象クラスとインターフェイスケースのコンテンツ全体であり、主に抽象クラスとインターフェイス関連のテクノロジを使用してこれらのケースを実装しています。