接口就是规范,定义的是一组规则
接口是抽象方法和常量值定义的集合
接口的特点:
1、用interfac来定义
2、接口中的所有成员变量都默认是由public static final修饰的
3、接口中的所有抽象方法都默认是由public abstract修饰的
4、接口中没有构造器
5、接口采用多继承机制
定义java类的语法格式 险些extends 后写implements
一个类可以实现多个接口 接口也可以继承其他接口
接口的实现类必须提供接口中所有方法的具体实现内容,方可实例化
***** 接口的主要用途就是被实现类 实现 (面向接口编程)
与继承关系类似,接口与实现类之间存在多态性
接口和类是并列关系 或者可以理解为一种特殊的类
从本质上讲,接口是一种特殊的抽象类
这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现
接口和抽象类之间的对比
抽象类:包含抽象方法
构造方法、抽象方法、普通方法、常量、变量
子类继承抽象类
抽象类可以实现多个接口
模板方法
抽象类有单继承的局限
接口:主要是抽象方法和全局常量的集合
常量、抽象方法
子类实现接口
接口不能继承抽象类,但允许继承多个接口
*****在开发中,常看到一个类不是去继承一个已经实现好的类
而是要么继承抽象类,要么实现接口
---------------------------------------------------------------
1、接口的用途式用来定义现实世界不同类型事物的共同特征
2、接口中的所有方法均为抽象方法
3、
————————————————————————————
interface Inter1{
// 接口中的方法 默认被public abstract 修饰
// 有方法体的方法 必须被default或static 修饰
// 被default或static修饰的方法不再是抽象方法,必须要写方法体,且具体子类可以不用重写方法,也不再是抽象类
// 只有接口或抽象类中有抽象方法时,子类没有全部重写抽象方法,
// abstract void say(int id,String name);
public default void say() {
System.out.println("default say()....");
}
//Illegal modifier for the interface method say;
//only public, abstract, default, static and strictfp are permitted
// void say();
default void say(String name) {
System.out.println("default say(String name...");
}
static void say(int id) {
System.out.println("static say(int id)...");
}
}
// 子类继承抽象类或实现接口时,如果没有全部重写抽象方法,则子类仍为抽象类,且需要显式添加abstract
class Student implements Inter1{
private int id;
private String name;
Student(){
}
private Student(int id,String name) {
}
protected Student(String name) {
}
public Student(int id){
}
}