【Java习题】--- 面向对象之多态、接口与内部类习题day14

1、已知电脑有三个USB接口,分别去实例化一个鼠标,一个键盘,一个U盘来连接到电脑上。 输出每一个USB接口连接的设备信息 。

  思路:这道题首先里面面向对象的思想,键盘、鼠标、U盘都有共同的USB,此USB是用来连接电脑、提示这是什么个什么东西,若是将它们共同的功能抽取出来就可以形成一个父类,而父类只有一个方法,但父类却不能写这是鼠标、键盘还什么什么,只能利用多态,而父类的方法不需要实现,因为父类实现了方法,对了子类也用不着父类的功能,干脆就定义为抽象的方法,从而变成了接口。注意:接口是一个规则,通过USB连接电脑必须遵循这个规则(这样更好理解)

package task;

public class BigData01 {
    public static void main(String[] args) {
        USB usb = new Mounse();
        USB usb1 = new KeyBroad();
        USB usb2 = new UPan();

        Computer computer = new Computer(usb, usb1, usb2);
        computer.showUSB();
    }
}

interface USB{
    public String getInfo();
}

class Mounse implements USB{
    @Override
    public String getInfo() {
        return "鼠标";
    }
}
class KeyBroad implements USB{

    @Override
    public String getInfo() {
        return "键盘";
    }
}
class UPan implements USB{

    @Override
    public String getInfo() {
        return "U盘";
    }
}

class Computer {
    public USB usb;
    public USB usb1;
    public USB usb2;

    public Computer(USB usb, USB usb1, USB usb2) {
        this.usb = usb;
        this.usb1 = usb1;
        this.usb2 = usb2;
    }

    public void showUSB(){
        System.out.println(usb.getInfo());
        System.out.println(usb1.getInfo());
        System.out.println(usb2.getInfo());
    }

}

注意:接口是抽象的,不能用来实例化对象,只能通过实现接口的子类来实例化对象,因而在main函数中借助多态来实现函数的功能。此处还有说一下,接口的实现方式:直接通过子类实现、使用匿名内部类、lambda表达式(更简单)。

1、设计一个家政服务规范(接口): 洗衣服, 扫地, 买菜, 做饭

     设计一个保姆类, 保姆需要遵循这些规范

     需求:在测试类中,实例化一个保姆的对象,然后让保姆买菜,做饭,扫地 。

package task;

public class BigData02 {
    public static void main(String[] args) {
        Nanny nanny = new Nanny();
        nanny.buy();;
        nanny.clean();
        nanny.cook();
        nanny.wash();

    }
}

interface HouseKeeping{
    public abstract void wash();
    public abstract void clean();
    public abstract void buy();
    public abstract void cook();
}

class Nanny implements HouseKeeping{

    @Override
    public void wash() {
        System.out.println("保姆洗衣服");
    }

    @Override
    public void clean() {
        System.out.println("保姆扫地");
    }

    @Override
    public void buy() {
        System.out.println("保姆买菜");
    }

    @Override
    public void cook() {
        System.out.println("保姆做饭");
    }
}

NOTE:此题没什么可说的,就是考察的接口 和 多态。

3.设计一个动物类,属性: 姓名,性别

   设计一个猫类,设计一个狗类, 猫和狗都继承自动物类

   需求:在测试类中设计一个方法,这个方法需要一个参数,参数的类型可以是猫类,也可以是狗类 -->多态(动物类 )

   在方法体内,将传入的猫或者狗的属性输出即可 输出到底是猫还是狗

package task;

public class BigData03 {
    public static void main(String[] args) {
        Dog dog = new Dog();
        Cat cat = new Cat();
        show(dog);
        show(cat);
    }
    public static void show(Animal animal){
        if (animal instanceof Dog){
            System.out.println("狗的属性:");
            System.out.println(animal.name);
            System.out.println(animal.sex);
        }
        if (animal instanceof Cat){
            System.out.println("狗的属性:");
            System.out.println(animal.name);
            System.out.println(animal.sex);
        }
    }
}

class Animal{
    public String name;
    public char sex;
}
class Cat extends Animal{}
class Dog extends Animal{}

4.设计一个数据传输接口:Type-C标准

  设计一个防水的接口:防水

  设计一个手机类,实现这个数据传输接口,采用Type-C;同时实现了防水的接口

package task;

public class BigData04 {
    public static void main(String[] args) {
        Phone phone = new Phone();
    }
}

interface TypeC{

}
interface ProtectedFormWater{

}
class Phone implements TypeC,ProtectedFormWater{

}

Note:其实就是考察实现多个接口

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值