Java面向对象程序设计-实验7 接口的应用

第1关:用接口展示不同品牌的产品

用接口展示不同品牌的产品

代码

//展示不同品牌的产品
import java.util.Scanner;

interface ShowMessage {
    void showLogo();
}

class TV implements ShowMessage {
    private String pinpai;

    public TV(String pinpai) {
        this.pinpai = pinpai;
    }

    @Override
    public void showLogo() {
        System.out.println(pinpai + "品牌电视机");
    }
}
//设计PC类,实现接口ShowMessage,类中有private的String类型成员变量pinpai
//类中添加public的构造方法,初始化成员变量
//类中重写方法showLogo(),使得输出(xx为品牌名):xx品牌电脑
//*****begin*****
class PC implements ShowMessage {
    private String pinpai;

    public PC(String pinpai) {
        this.pinpai = pinpai;
    }

    @Override
    public void showLogo() {
        System.out.println(pinpai + "品牌电脑");
    }
}
//*****end*****
public class SY7_1 {
    public static void print(ShowMessage sm) {
        sm.showLogo();
    }

    public static void main(String[] args) {
        //品牌名字符串由用户输入
        String str = new Scanner(System.in).next();
        ShowMessage sm;
        //品牌名称通过构造方法注入,由接口展示不同的品牌
        sm = new TV(str);
        print(sm);
        sm = new PC(str);
        print(sm);

    }
}    

第2关:用接口展示不同国家的问候语

用接口展示不同国家的问候语

思考面向接口编程的好处

代码

//设计表达不同国家的问候语
//如果增加表达另外一个国家的问候语,如何做?请在idea环境练习
import java.util.Scanner;

interface SpeakHelloMode {
    void speakHello();
}

class Chinese implements SpeakHelloMode {
    @Override
    public void speakHello() {
        System.out.println("中国人习惯问候语:你好,吃了吗?");
    }
}

class English implements SpeakHelloMode {
    @Override
    public void speakHello() {
        System.out.println("英国人习惯问候语:你好,天气不错!");
    }
}

class KindHello {
    public void SayHello(SpeakHelloMode hello) {
        hello.speakHello();
    }
}

public class SY7_2 {
    public static void main(String[] args) {
        SpeakHelloMode smode = null;
        String country = new Scanner(System.in).next();
        //根据输入的输入的国家,输出不同的问候语
        //如果输入:中国,则输出:中国人习惯问候语:你好,吃了吗?
        //如果输入:英国,则输出:英国人习惯问候语:你好,天气不错!
        //其他情况,则输出:您的国家是?然后退出程序运行。
        //*****begin*****
        KindHello kindHello = new KindHello();
        if (country.equals("中国")) {
            smode = new Chinese();
        } else if (country.equals("英国")) {
            smode = new English();
        } else {
            System.out.println("您的国家是?");
            System.exit(0);
        }
        kindHello.SayHello(smode);
        //*****end*****
    }
}    

第3关:广告牌展示不同公司的广告

利用接口实现:广告牌展示不同公司的广告

代码

//设计广告牌,希望所设计的广告牌可以展示许多公司的广告
import java.util.Scanner;

interface Advertisement{//广告展示接口
    public void showAdvertisement();
}

class AdvertisementBoard{//广告牌类,可展示不同公司的广告
    //声明一个接口Advertisement的变量(如ad)作为成员
    //添加public成员方法setAd,无返回,参数为Advertisement接口变量,用来设置或初始化ad
    //添加public成员方法show(),无返回,无参,根据以下规则展示广告Advertisement:
    //如果ad为null,则换行输出:广告招商中
    //其他情况下,则由ad调用其接口方法showAdvertisement(),展示广告
    //*****begin*****
    private Advertisement ad;

    public void setAd(Advertisement ad) {
        this.ad = ad;
    }

    public void show() {
        if (ad == null) {
            System.out.println("广告招商中");
        } else {
            ad.showAdvertisement();
        }
    }
    //*****end*****
}

class ACorp implements Advertisement{
    private String name;
    public ACorp(String name) {
        this.name = name;
    }

    @Override
    public void showAdvertisement() {
        System.out.println(name+"公司,永争第一!");
    }
}

//增加一个公司:BCorp,实现接口Advertisement
//BCorp类中有一个private成员属性name
//BCorp类中有public构造方法,初始化name
//BCorp类中有public方法showAdvertisement(),用于换行输出(XX为公司name):XX公司,服务全球!
//*****begin*****
class BCorp implements Advertisement {
    private String name;

    public BCorp(String name) {
        this.name = name;
    }

    @Override
    public void showAdvertisement() {
        System.out.println(name + "公司,服务全球!");
    }
}
//*****end*****

public class SY7_3 {
    public static void main(String[] args) {
        AdvertisementBoard board=new AdvertisementBoard();
        Advertisement ad=null;
        String corp=new Scanner(System.in).next();
        if(corp.equals("A")){
            ad=new ACorp("corpA");
        } else if (corp.equals("B")) {
            ad=new BCorp("corpB");
        }
        board.setAd(ad);
        board.show();
    }
}

第4关:利用接口实现不同类别事物的不同行为

说明:利用接口实现不同事件的不同行为,体会接口与抽象类的区别

任务要求: 按照注释要求,完成类的设计 根据本案例接口的设计,可继续在idea环境中,进行程序的扩展,如面对接口Swimable,在主类中添加方法:flyInAir(Flyable fly),swimInWater(Swimable swim)等。

代码

Car.java

abstract class Car {
    protected String carName;

    public Car(String carName) {
        this.carName = carName;
    }

    public abstract void useEnergy();
}

class ElectricCar extends Car implements Runnable {
    public ElectricCar(String carName) {
        super(carName);
    }

    @Override
    public void run() {
        System.out.println("我是:" + carName + ",我风驰电掣");
    }

    @Override
    public void useEnergy() {
        System.out.println("我是:" + carName + ",我使用电能");
    }
}

代码

Animal.java

abstract class Animal {
    protected String name;

    public Animal(String name) {
        this.name = name;
    }
}

class Penguin extends Animal implements Runnable, Swimable {
    public Penguin(String name) {
        super(name);
    }

    @Override
    public void run() {
        System.out.println("我是:" + name + ",我摇摇晃晃地走");
    }

    @Override
    public void swim() {
        System.out.println("我是:" + name + ",我可以在寒冷的海水里游泳");
    }
}

class Swan extends Animal implements Flyable, Swimable, Runnable {
    public Swan(String name) {
        super(name);
    }

    @Override
    public void run() {
        System.out.println("我是:" + name + ",我摇摇晃晃地走");
    }

    @Override
    public void swim() {
        System.out.println("我是:" + name + ",我游泳很优美丝滑");
    }

    @Override
    public void fly() {
        System.out.println("我是:" + name + ",我可以飞翔");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小柒_02

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值