任务2、创建笔记本电脑类(继承一个类,实现多个接口)

任务2、创建笔记本电脑类(继承一个类,实现多个接口)

  • 创建NetCard接口和USB接口,创建Computer抽象类,然后继承Computer类,实现NetCard接口和USB接口,创建笔记本电脑类Laptop。
  • Java简化了C++的多重继承,是单根继承,只能继承一个类,但是作为补偿,Java允许实现多个接口,让一个类可以实现更多的特性。
  • 在Java里,继承一个类,实现多个接口,就好比是只有一个父亲,可以有多个叔叔。

(二)编程实现

1、创建NetCard接口

  • 代码如下:
package p03.t02;

/**
 * 功能;网卡接口
 * 作者:刘金花
 * 日期:2022 年05月05日
 */
public interface NetCard {
    void connectNetwork(); // 抽象方法,默认是public权限

    default void speak() { // 缺省方法(从JDK8开始)
        System.out.println("网卡用于连接网络……");

    }

    static void tell() { //静态方法 (从JDK8开始)
        System.out.println("我是一张网卡……");
    }
}

2、创建USB接口

  • 代码如下:
package p03.t02;

/**
 * 功能;USB接口(Universal Serial Bus)
 * 作者:刘金花
 * 日期:2022 年05月05日
 */
public interface USB {
    final String TYPE = "3.0"; // 接口只能定义常量
    void connectUSB(); // 抽象方法
}

3、创建Computer抽象类

  • 代码如下:
package p03.t02;

/**
 * 功能;计算机抽象类
 * 作者:刘金花
 * 日期:2022 年05月05日
 */
public abstract class Computer {
    public abstract void compute(); // 抽象方法必须要有abstract关键字
    public abstract void compute(String item); // 重载(Overload)的抽象方法

    public void speak() { // 普通方法(抽象类里可以包含普通方法)
        System.out.println("我是一台计算机……");
        // 注意:抽象类里甚至可以不包含抽象方法
    }
}

  • 注意:抽象类里可以包含普通方法,甚至可以不包含抽象方法

4、创建笔记本电脑类 - Laptop

  • Laptop继承Computer抽象类,实现NetCard和USB接口
  • 具体代码如下:
package p03.t02;

/**
 * 功能;笔记本电脑类
 * 作者:刘金花
 * 日期:2022 年05月05日
 */
public class Laptop extends Computer implements NetCard, USB {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override //解释:子类觉得父类的不好去改写父类的方法
    public void compute() {
        System.out.println("笔记本电脑[" + name + "]正在计算中......");
    }

    @Override
    public void compute(String item) {
        System.out.println("笔记本电脑[" + name + "]正在计算[" + item + "]。");
    }

    @Override
    public void connectNetwork() {
        System.out.println("笔记本电脑[" + name + "]正在连接网络......");
    }

    @Override
    public void connectUSB() {
        System.out.println("笔记本电脑[" + name + "]正在连接USB接口......");
        // 注意:子类相对于父类,可以添加属性成员,还可以添加方法成员,甚至可以重写父类的同名同参方法,这个操作叫做Override(重写)

    }
}
  • 其实,子类相对于父类,可以添加属性成员,还可以添加方法成员,甚至可以覆盖父类的同名同参方法,这个操作叫做Override(重写)。
  • 此时,查看类的层次结构图,按组合键<Ctrl>+<H>
    在这里插入图片描述
  • 查看一下Latop的类图
    在这里插入图片描述
    在这里插入图片描述
  • 我们可以看一看比较复杂的类图(继承JFrame,创建LoginFrame)

在这里插入图片描述

5、创建笔记本电脑测试类

  • 代码如下:
package p03.t02;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * 功能;测试笔记本电脑
 * 作者:刘金花
 * 日期:2022 年05月05日
 */
public class TestLaptop {
    public static void main(String[] args) throws IOException {
        String name, item;
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        System.out.print("笔记本电脑名:");
        name = br.readLine();
        System.out.print("计算项目名:");
        item = br.readLine();

        // 基于无参构造方法创建对象
        Laptop laptop = new Laptop();
        // 设置对象属性
        laptop.setName(name);
        // 调用对象方法
        laptop.speak();
        laptop.connectUSB();
        laptop.connectNetwork();
        laptop.compute();
        laptop.compute(item);

        // 说明:Computer类除了两个重载的抽象方法之外,还有一个普通方法speak()
    }
}

  • 运行程序,查看结果
    在这里插入图片描述
  • 代码说明:Computer类除了两个重载的抽象方法之外,还有一个普通方法speak(),这个方法不是私有的,因此它的子类Laptop就能继承这个方法,于是laptop.speak()方法会输出“我是一台计算机……”
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值