创建笔记本电脑类(继承一个类,实现多个接口)
- 创建
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();
default void speak() {
System.out.println("网卡用于连接网络……");
}
static void tell() {
System.out.println("我是一张网卡");
}
}
2、创建USB接口
- 在
net.nieyourong.p03.t02
包里创建USB
接口

package net.nieyourong.p03.t02;
public interface USB {
String TYPE = "3.0";
void connectUSB();
}
3.创建Computer抽象类
- 在
net.nieyourong.p03.t02
包里创建Computer
抽象类

package net.nieyourong.p03.t02;
public abstract class Computer {
public abstract void compute();
public abstract void compute(String item);
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接口……");
}
}
- 此时,查看类的层次结构图,按组合键
<Ctrl> +<H>

- 查看一下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));
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()
方法会输出“我是一台计算机……”