接口:
它的本质就是体现一个现实世界事物所具有的的额外的扩展功能.
定义格式:
interface 接口名{}
接口中的方法:
不能有方法体,隐藏public abstract关键字,只能是抽象方法,不能有方法体.
接口的特点:
1.不能实例化(不能创建对象)
2.如何实例化
接口实例化: 通过接口的子实现类(一定是具体类)进行实例化----接口多态(使用时最多的!)
子实现类和接口的关系: implements 实现关系
接口的子实现类如果是抽象类----->肯定要存在抽象类的具体的子类,否则都不能实例化!
接口的子实现类的命名规则:
开发中--->在接口名的后面+Impl:子实现类
interface Inter{}
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) {
Jump jump = new JumpCat() ;
jump.jump();
}
}
接口的成员特点:
1.接口中的成员方法:只能是抽象方法,默认的修饰符:public abstract(可以省略不写)
2.接口没有构造方法
3.接口的成员变量只能是常量:存在默认修饰符:public static final (可以省略不写)
接口和抽象类的区别
(1)成员的区别
抽象类:
成员变量:既可以是变量,也可以是常量
成员方法:可以存在抽象方法(必须携带abstract关键字),也可以有非抽象方法
构造方法:存在无参/有参构造方法,---目的需要给数据进行初始化,分层初始化
接口:
成员变量:只能是常量,存在默认的修饰符public static final修饰
成员方法:只能是抽象方法:存在默认的修饰符 public abstract
构造方法:没有
(2)关系的区别
类与类之间: 继承关系,只支持单继承,不支持多继承,但是可以多层继承
类与接口: 实现关系,一个类继承另一个类的同时可以实现多个接口,中间逗号隔开
接口与接口: 继承关系,可以支持单继承,也可以支持多继承,多层继承
(3)设计理念
抽象类:----->强制子类必须完成的事情,由于存在继承关系,体现的是一种"is a"的关系.
接口-------->体现某个事物额外的功能,谁实现该接口就具备该功能,体现的是一种"like a"的关系.