面向对象基础的Java作业七

1.编写 Java 程序,设计一个学生类Student和它的一个子类Undergraduate,要求如下:

(1) Student类有name(姓名)、和age(年龄)属性,一个包含两个参数的构造方法,用于给name和age属性赋值,一个show()方法打印Student的属性信息

(2) 本科生类Undergraduate增加一个degree(学位)属性。有一个包含三个参数的构造方法,前两个参数用于给继承的name和age属性赋值,第三个参数给degree专业赋值,一个show()方法用于打印Undergraduate的属性信息

(3) 在编写测试类Test01中分别创建Student对象和Undergraduate对象,调用它们的show()。

1.代码:

class Student {

    String name;

    int age;



    // 构造方法

    public Student(String name, int age) {

        this.name = name;

        this.age = age;

    }



    // show()方法

    public void show() {

        System.out.println("姓名:" + name + ",年龄:" + age);

    }

}



// 本科生类,继承自学生类

class Undergraduate extends Student {

    String degree;



    // 构造方法

    public Undergraduate(String name, int age, String degree) {

        super(name, age);

        this.degree = degree;

    }



    // show()方法

    @Override

    public void show() {

        super.show();

        System.out.println("学位:" + degree);

    }

}



// 测试类

public class Test01 {

    public static void main(String[] args) {

        // 创建Student对象

        Student student = new Student("张三", 20);

        // 调用show()方法

        student.show();



        // 创建Undergraduate对象

        Undergraduate undergraduate = new Undergraduate("李四", 22, "计算机科学");

        // 调用show()方法

        undergraduate.show();

    }

}

2.运行结果:

2.编写 Java 程序,请按照以下要求设计一个学生类Student和Teacher,并进行测试。

(1) 设计两个类Student和Teacher

(2) 抽取两个类共同的内容(如:吃饭、睡觉)封装到一个类Person中,各自特有的部分保留在各自类中。

(3) 让学生类继承Person类,老师类也继承Person。

(4) 编写测试类Test02,测试Student类和Teacher是否继承了Person类的成员。

1.代码

// 定义Person类,包含共同的内容

class Person {

    void eat() {

        System.out.println("吃饭");

    }



    void sleep() {

        System.out.println("睡觉");

    }

}



// 定义Student类,继承Person类

class Student1 extends Person {

    String name1;



    // 构造方法

    public Student1(String name1) {

        this.name1 = name1;

    }



    // 重写eat方法

    @Override

    void eat() {

        System.out.println(name1 + "正在吃饭");

    }

}



// 定义Teacher类,继承Person类

class Teacher extends Person {

    String subject;



    // 构造方法

    public Teacher(String subject) {

        this.subject = subject;

    }



    // 重写sleep方法

    @Override

    void sleep() {

        boolean name1 = false;

        System.out.println(name1 + "正在学习" + subject);

    }

}



// 测试类Test02

public class Test02 {

    public static void main(String[] args) {

        // 创建Student对象并测试

        Student1 student1 = new Student1("小明");

        student1.eat(); // 输出:小明正在吃饭

        student1.sleep(); // 输出:小明正在睡觉



        // 创建Teacher对象并测试

        Teacher teacher = new Teacher("数学");

        teacher.eat(); // 输出:老师正在吃饭

        teacher.sleep(); // 输出:老师正在学习数学

    }

}



2.运行结果:

3.编写 Java 程序,请按照以下要求设计一个Test03类,并进行测试。

(1) 定义一个类Phone,编写方法call(),表示打电话功能

(2) 定义一个Phone的子类NewPhone,重写父类call()方法,让它除了打电话功能外还具有开启语言和关闭语言功能。

(3) 编写一个测试类Test03,分别调用重写前和重写后的call()方法

1.代码

// 定义Phone类
class Phone {
    public void call() {
        System.out.println("--重写前--");
        System.out.println("打电话");
    }
}

// 定义Phone的子类NewPhone
class NewPhone extends Phone {
    @Override
    public void call() {
        System.out.println("--重写后--");
        System.out.println("开启语音功能");
        System.out.println("打电话");
        System.out.println("关闭语音功能");
    }
}

// 编写测试类Test03
public class Test03 {
    public static void main(String[] args) {
        Phone phone = new Phone(); // 创建Phone对象
        phone.call(); // 调用重写前的call()方法

        NewPhone newPhone = new NewPhone(); // 创建NewPhone对象
        newPhone.call(); // 调用重写后的call()方法
    }
}

2.运行结果:

4. 编写 Java 程序,定义Test04类进行测试,要求如下:

(1) 设计接口Phone代表传统手机,在接口中定义receiveMessages()和call()抽象方法。

(2) 设计接口SmartPhone代表智能手机,在接口中定义faceTime()方法,并使用extends关键字继承Phone接口,使其具有Phone接口的所有功能。

(3) 设计类HWPhone表示华为手机,类中定义useHWUI()方法,并实现SmartPhone接口的所有方法。

   4)编写测试类Test04,测试类中对HWPhone进行实例化,并访问华为手机具有的各种功能。

1.代码

interface Phone1 {
    void receiveMessages();
    void call();
}

interface SmartPhone extends Phone1 {
    void faceTime();
}

class HWPhone implements SmartPhone {
    @Override
    public void receiveMessages() {
        System.out.println("接收短信");
    }

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

    @Override
    public void faceTime() {
        System.out.println("视频通话");
    }

    public void useHWUI() {
        System.out.println("使用HWUI");
    }
}

public class Test04 {
    public static void main(String[] args) {

        HWPhone phone = new HWPhone();
        phone.receiveMessages();
        phone.call();
        phone.faceTime();
        phone.useHWUI();
    }
}
  1. 运行结果:

    

应用题1:定义USB接口(具备开启功能、关闭功能),笔记本要使用USB设备,鼠标和键盘要想能在电脑上使用,那么鼠标和键盘也必须遵守USB规范。

进行描述笔记本类,实现笔记本使用USB鼠标、USB键盘

USB接口,包含开启功能、关闭功能

笔记本类,包含运行功能、关机功能、使用USB设备功能

鼠标类,要符合USB接口

键盘类,要符合USB接口

注:掌握定义类、接口的语法结构、掌握面向接口的编程方法。

1.代码

interface USB {
    void turnOn();
    void turnOff();
}

class Notebook implements USB {
    private boolean isRunning;

    public Notebook() {
        isRunning = false;
    }

    public void run() {
        if (!isRunning) {
            isRunning = true;
            System.out.println("笔记本正在运行");
        } else {
            System.out.println("笔记本已经在运行了");
        }
    }

    public void useUSBDevice(USB device) {
        device.turnOn();
        System.out.println("已使用USB设备");
    }

    public void shutdown() {
        if (isRunning) {
            isRunning = false;
            System.out.println("笔记本已经关机");
        } else {
            System.out.println("笔记本已经关机了");
        }
    }
    @Override
    public void turnOn() {
        System.out.println("USB接口已开启");
    }

    @Override
    public void turnOff() {
        System.out.println("USB接口已关闭");
    }
}

class Mouse implements USB {
    @Override
    public void turnOn() {
        System.out.println("鼠标已开启");
    }

    @Override
    public void turnOff() {
        System.out.println("鼠标已关闭");
    }
}

class Keyboard implements USB {
    @Override
    public void turnOn() {
        System.out.println("键盘已开启");
    }

    @Override
    public void turnOff() {
        System.out.println("键盘已关闭");
    }
}

public class Test05 {
    public static void main(String[] args) {
        Notebook notebook = new Notebook();
        notebook.run();
        notebook.shutdown();

        USB mouse = new Mouse();
        notebook.useUSBDevice(mouse);
        mouse.turnOn();
        mouse.turnOff();

        USB keyboard = new Keyboard();
        notebook.useUSBDevice(keyboard);
        keyboard.turnOn();
        keyboard.turnOff();
    }
}

2.运行结果

应用题2.编写一个程序模拟“饲养员喂食动物”的过程。

饲养员在给动物喂食时,给不同的动物喂不同的食物,而且在每次喂食时,动物都会发出欢快的叫声。例如,给小狗喂骨头,小狗会汪汪叫;给小猫喂食,小猫会喵喵叫。

实现要求如下:

饲养员给小狗喂骨头,小狗汪汪叫。

饲养员给小猫喂小鱼,小猫喵喵叫。

1.代码

class Animal {
    void makeSound() {
        System.out.println("动物发出叫声");
    }
}

// Dog 类,继承自 Animal 类,表示小狗
class Dog extends Animal {
    @Override
    void makeSound() {
        System.out.println("小狗汪汪叫~~~小狗正在啃着香喷喷的骨头!");
    }
}

// Cat 类,继承自 Animal 类,表示小猫
class Cat extends Animal {
    @Override
    void makeSound() {
        System.out.println("小猫喵喵叫~~~小猫正在吃着香喷喷的黄花鱼!");
    }
}

// Zookeeper 类,表示饲养员
class Zookeeper {
    // 喂食方法,参数为动物类型
    void feedAnimal(Animal animal) {
        // 喂食时动物发出叫声
        animal.makeSound();
    }
}

// 主程序
 class Main {
    public static void main(String[] args) {
        System.out.println("欢迎来到动物园!");
        System.out.println("-------------------");
        // 创建小狗对象和小猫对象
        Dog dog = new Dog();
        Cat cat = new Cat();

        // 创建饲养员对象
        Zookeeper zookeeper = new Zookeeper();

        // 饲养员给小狗喂骨头
        zookeeper.feedAnimal(dog);

        // 饲养员给小猫喂小鱼
        zookeeper.feedAnimal(cat);
    }
}

2.运行结果:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

你二舅ya

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

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

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

打赏作者

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

抵扣说明:

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

余额充值