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

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

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

(一)编程实现

1、创建NetCard接口

在net.nieyourong.p03.t02包里创建NetCard接口
在这里插入图片描述

package net.nieyourong.p03.t02;
public interface NetCard {
public abstract void connectNetwork();//抽象方法,默认是public权限

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

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

}

2、创建USB接口

在net.nieyourong.p03.t02包里创建USB接口
在这里插入图片描述

package net.nieyourong.p03.t02;
public interface USB {
String TYPE = “3.0”;//接口只能定义常量
void connectUSB();//抽象方法
}

创建Computer抽象类

在 net.nieyourong.p03.t02包里创建Computer抽象类
在这里插入图片描述

package net.nieyourong.p03.t02;
public abstract class Computer {
public abstract void compute();//抽象方法,必须要有abstract关键字(加上public)
public abstract void compute(String item);//重载(Overload)的抽象方法

public void speak() {//普通方法
    System.out.println("我是一台计算机……");
}

}

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

在net.nieyourong.p03.t02包里创建Laptop类
在这里插入图片描述

Laptop继承Computer抽象类,实现NetCard和USB接口

在这里插入图片描述

package net.nieyourong.p03.t02;
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接口……");
}

}

此时,查看类的层次结构图,按组合键 +
在这里插入图片描述

查看一下Laptop的类图
在这里插入图片描述

我们可以看一看比较复杂的类图(继承JFrame,创建LoginFrame)
在这里插入图片描述

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

在net.nieyourong.p03.t02包里创建TestLaptop类
在这里插入图片描述

package net.nieyourong.p03.t02;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class TestLaptop {
public static void main(String[] args) throws IOException {
String name, item;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));//BufferedReader缓冲字符流

    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(),这个方法不是私有的,因此它的子类Laptop就能继承这个方法,于是laptop.speak()方法会输出“我是一台计算机……”
(二)讲解知识点
1、知识点说明
抽象类不能实例化

使用抽象类的匿名子类

创建一个类,如果没有显式地继承某个类,那么它就是Object类的子类

(二)拓展拓展练习

任务1、创建Animal类,继承Animal类创建 Cat类、Dog类和Bird类

Animal的类图
在这里插入图片描述

Cat的类图
在这里插入图片描述

Dog的类图
在这里插入图片描述

Bird的类图
在这里插入图片描述

任务2、显示一个Swing窗口

创建LoginFram类,继承JFrame
在这里插入图片描述在这里插入图片描述

希望在窗口里添加一个按钮,单击它会弹出一个消息框,网页设计里通过脚本来实现,如下图所示。
在这里插入图片描述

package net.nieyourong.p03.t02;

import javax.swing.;
import java.awt.
;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class LoginFrame extends JFrame {

private JButton btnLogin;

/**
 * 构造方法
  */
public LoginFrame(String title) {
    super((title));//super表示父类的实例
    initGUI();//初始化用户界面
    eventHandling();//进行事件处理
}

/**
 * 事件处理 匿名内部类
 */
private void eventHandling() {
    //给登录按钮注册动作监听器
    btnLogin.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            JOptionPane.showMessageDialog(null, "哈哈,今天立夏,欢迎登录~");
        }
    });
}
            /**
             * 初始化图形用户界面
             */
    private void initGUI() {
    //创建按钮对象
    btnLogin = new JButton("登录");
    btnLogin.setFont(new Font("楷体",Font.PLAIN,20));

    //获取窗口的内容面板(Container --> JPanel)
    JPanel panel = (JPanel) this.getContentPane();
    //设置内容面板布局 - 流式布局
    panel.setLayout(new FlowLayout());

    //将按钮对象添加到内容面板
    panel.add(btnLogin);

    //设置窗口属性
    this.setVisible(true);
    this.setBounds(200,200, 400, 300);//设置窗口边界(位置与大小)
    this.setLocationRelativeTo(null);//让窗口屏幕居中
    this.setResizable(false);//让窗口不能调整尺寸
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口里退出应用程序(3)
}

public static void main(String[] args) {
    //创建登录窗口匿名对象
    new LoginFrame("用户登录");
}

}
运行程序,查看结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值