1.接口:它的本质就是体现一个现实世界事物所具有的的额外的扩展功能.
2.定义格式: interface 接口名{}
3.接口中的方法:不能有方法体,隐藏public abstract关键字,只能是抽象方法,不能有方法体.
4.接口的特点:
(1)不能实例化(不能创建对象)
如何实例化?
解决方法:接口实例化: 通过接口的子实现类(一定是具体类)进行实例化
接口多态(使用时最多的)
5.子实现类和接口的关系: implements: 实现关系
6.接口的子实现类如果是抽象类,肯定要存在抽象类的具体的子类,否则都不能实例化
接口的子实现类的命名规则:在接口名的后面+Impl:子实现类
例如:
interface Inter{}
class InterImpl implements Inter{}
7.接口的初步了解(以猫为例)
//定义一个接口:跳高接口
interface Jump{
public abstract void jump() ;
}
//定义一个跳高猫类
class JumpCat implements Jump{
@Override
public void jump() {
System.out.println("猫可以跳高了");
}
}
//测试类
public class InterfaceDemo {
public static void main(String[] args) {
//接口多态:----- 之前抽象类多态:Fu fu = new Zi() ; Fu类抽象类
//接口--->指向子类实现类对象
Jump jump = new JumpCat() ;
jump.jump(); //编译看左,运行看右!(接口只能有抽象方法)
}
}
8.接口的成员特点
(1)接口中的成员方法:只能是抽象方法,默认的修饰符:public abstract(可以省略不写).
(2)接口没有构造方法.
(3)接口的成员变量只能是常量:存在默认修饰符:public static final (可以省略不写).
9.接口和抽象类的区别
(1)成员的区别
抽象类:
成员变量:既可以是变量,也可以是常量
成员方法:可以存在抽象方法(必须携带abstract关键字),也可以有非抽象方法
构造方法:存在无参/有参构造方法,---目的需要给数据进行初始化,分层初始化
接口:
成员变量:只能是常量,存在默认的修饰符public static final修饰
成员方法:只能是抽象方法:存在默认的修饰符 public abstract
构造方法:没有
(2)关系的区别
类与类之间: 继承关系,只支持单继承,不支持多继承,但是可以多层继承
类与接口: 实现关系,一个类继承另一个类的同时可以实现多个接口,中间逗号隔开
接口与接口: 继承关系,可以支持单继承,也可以支持多继承,多层继承
(3)设计理念
抽象类:----->强制子类必须完成的事情,由于存在继承关系,体现的是一种"is a"的关系.
接口-------->体现某个事物额外的功能,谁实现该接口就具备该功能,体现的是一种"like a"的关系.