1. 抽象类
当我们的方法没有具体的实现,那么这个时候我们可以将这个方法定义为抽象方法,把定义这个方法的类定义为抽象类.
//抽象类
public abstract class Shape {
public int a;
public static int b ;
public void func() {
}
//抽象方法
abstract public void draw();
}
- 使用 abstract 修饰的方法,叫做抽象方法.
- 包含抽象方法的类必须设计为抽象类
- 抽象类不能够进行实例化
Shape shape = new Shape( );- 抽象类当中,可以有和普通类一样的方法,成员.
和普通类不一样的是,抽象类不可以进行实例化.- 抽象类不可以被实例化, 但是可以被继承.
- 当一个普通类继承了抽象类,那么这个普通类就要重写抽象类当中的所以方法,除非把这个普通类也加 abstract 变成抽象类
2. 接口
2.1 接口的概念
生活当中的接口比比皆是,手机充电口,插头接口…
接口就是公共的行为规范标准,大家在实现时,只要符合规范标准,就可以通用。
在Java中,接口可以看成是:多个类的公共规范,是一种引用数据类型
public interface 接口名称{
// 抽象方法
public abstract void method1(); // public abstract 是固定搭配,可以不写
public void method2();
abstract void method3();
void method4();
// 注意:在接口中上述写法都是抽象方法,更推荐方式4,代码更简洁
}
2.3 接口使用
接口不能直接使用 , 必须要有一个"实现类"来"实现"该接口,实现接口中的所有抽象方法。
public class 类名称 implements 接口名称{
// ...
}
注意
- 子类和父类之间是extends 继承关系
- 类与接口之间是 implements 实现关系
实例:
请实现笔记本电脑使用USB鼠标、USB键盘的例子
- USB接口:包含打开设备、关闭设备功能
- 笔记本类:包含开机功能、关机功能、使用USB设备功能
- 鼠标类:实现USB接口,并具备点击功能
- 键盘类:实现USB接口,并具备输入功能
public interface USB {
void openDevice();
void closeDevice();
}
public class KeyBoard implements USB{
@Override
public void openDevice() {
System.out.println("打开键盘");
}
@Override
public void closeDevice() {
System.out.println("关闭键盘");
}
public void inPut() {
System.out.println("键盘输入");
}
}
public class Mouse implements USB{
@Override
public void openDevice() {
System.out.println("打开鼠标!");
}
@Override
public void closeDevice() {
System.out.println("关闭鼠标!");
}
public void click() {
System.out.println("鼠标点击");
}
}
public class Computer {
public void powerOn() {
System.out.println("打开笔记本电脑");
}
public void powerOff() {
System.out.println("关闭笔记本电脑");
}
public void useDevice(USB usb) {
usb.openDevice();
if (usb instanceof Mouse) {
Mouse mouse = (Mouse) usb;
mouse.click();
}else if(usb instanceof KeyBoard) {
KeyBoard keyBoard = (KeyBoard) usb;
keyBoard.inPut();
}
usb.closeDevice();
}
}
public class Test {
public static void main(String[] args) {
Computer computer = new Computer();
computer.powerOn();
computer.useDevice(new Mouse());
computer.useDevice(new KeyBoard());
computer.powerOff();
}
}