在Java 9+版本中,接口的内容可以有:
1、成员变量其实是常量
public static final 数据类型 = 数据值;
注意:常量名必须进行赋值,一旦赋值不可改变
2、接口中最重要的就是抽象方法
public abstract 返回值类型 方法名称(参数列表);
注意:实现类必须覆盖重写所有的接口方法,除非实现类是抽象类
3、从java 8开始,接口里允许定义默认方法
public default 返回值类型 方法名称(参数列表){方法体}
注意:默认方法也可以被覆盖重写
4、从Java 8开始,接口里允许定义静态方法
public static 返回值类型 方法名称(参数列表){方法体}
注意:应该通过接口名称进行调用 不能通过实现类对象调用
5、从Java 9 开始,接口里允许定义私有方法
普通私有方法: private 返回值类型 方法名称(参数列表){方法体}
静态私有方法:private static 返回值类型 方法名称(参数列表){方法体}
注意:private方法只有接口自己才能调用
多态中成员变量和成员方法的使用:
成员变量:编译看左边 运行也看左边
成员方法:编译看左边 运行看右边
判断一个父类引用的对象是什么子类
instanceof
if(animal instanceof Dog){
Dog dog=(Dog)animal;
}
if(animal instanceof Cat){
Cat cat=(Cat)animal;
}
笔记本USB接口案例
USB接口
public interface USB {
public abstract void open();
public abstract void close();
}
鼠标类
public class Mouse implements USB{
@Override
public void open() {
System.out.println("插入鼠标");
}
@Override
public void close() {
System.out.println("鼠标退出");
}
public void click() {
System.out.println("鼠标点击");
}
}
键盘类
public class Keyboard implements USB{
@Override
public void open() {
System.out.println("插入键盘");
}
@Override
public void close() {
System.out.println("键盘退出");
}
public void input() {
System.out.println("键盘输入");
}
}
电脑类
public class Computer {
public void powerOn() {
System.out.println("打开电脑");
}
public void powerOff() {
System.out.println("关闭电脑");
}
//插入USB设备
public void insertDevice(USB usb) {
usb.open();
}
//使用USB设备
public void useDevice(USB usb) {
if(usb instanceof Mouse) {
Mouse mouse = (Mouse)usb; //向下转型
mouse.click();
}else if(usb instanceof Keyboard) {
Keyboard keyboard = (Keyboard)usb;
keyboard.input();
}
}
//退出USB设备
public void exitDevice(USB usb) {
usb.close();
}
}
主函数测试
public class Demo {
public static void main(String[] args) {
Computer computer = new Computer();
computer.powerOn(); //打开电脑
Mouse mouse = new Mouse(); //创建一个鼠标
Keyboard keyboard = new Keyboard(); //创建一个键盘
computer.insertDevice(mouse);
computer.useDevice(mouse);
computer.insertDevice(keyboard);
computer.useDevice(keyboard);
computer.exitDevice(mouse);
computer.exitDevice(keyboard);
computer.powerOff();
}
}