01_接口概述(interface)
- A:接口概述
- 对外提供规则的都是接口
- B:接口特点
- a:接口中的方法都是抽象的
- b:接口用关键字interface表示
- interface 接口名 { }
- c:类实现接口用implements表示
- class 类名 implements 接口名 { }
- d:接口不能实例化
- 那么,接口如何实例化呢?
- 按照多态的方式来实例化
- e:接口的子类
- a:可以是抽象类,但是意义不大
- b:可以是具体类,要重写接口中的所有抽象方法(推荐)
02_接口的子类
接口的子类可以是抽象类,也可以是具体类
- 接口的子类可以是抽象类
interface Inter{
public abstract void print(); //接口中的方法都是抽象的
}
abstract class Demo implements Inter{
}
03_接口的成员特点
- 成员变量:只能是常量,并且是静态的并公共的
- 默认修饰符:public static final
- 构造方法:接口没有构造方法
- 成员方法:只能是抽象方法
- 默认修饰符:public abstract
- 接口中所有的变量与方法都是 public的,因为要被实现和重写
- 成员变量
接口中定义的变量只能是常量final修饰,如(final num = 10),实现该接口的类,不能重新定义该变量num,因为是常量final修饰,就算接口中不写final,系统也会自动添加
接口中的变量自动修饰为public static final, 自动添加静态,可以类名.调用
- 构造方法
接口中没有构造方法,不能写构造方法
- 成员方法
接口中只能定义抽象方法,系统默认方法前自动添加 public abstract,所以实现接口的类,重写该方法时,也必须写public,保持权限一致
04_类与类,类与接口,接口与接口的关系
- A:类与类,类与接口,接口与接口的关系
- a:类与类
- 继承关系,只能单继承,可以多层继承
- b:类与接口(类可以同时实现多个接口)
- 实现关系,可以单实现,也可以多实现
- 并且还可以在继承一个类的同时,实现多个接口
- c:接口与接口
- 继承关系,可以单继承,也可以多继承
- a:类与类
- 示例:类与接口(类可以同时实现多个接口)
class Demo1_Interface{
public static void main(String[] args){
Demo d = new Demo();
d.printA();
d.printB();
}
}
interface InterA{
public abstract void printA();
}
interface InterB{
public abstract void printB();
}
//class Demo implements InterA implements InterB不能这么写,implements只能写一次
class Demo implements InterA, InterB{
public void printA(){
System.out.println("printA");
};
public void printB(){
System.out.println("printB");
};
}
- 示例:接口与接口 (可以单继承,也可以多继承)
interface InterA{
public abstract void printA();
}
interface InterB{
public abstract void printB();
}
interface InterC extends InterA, InterB {
}
- 示例:类与接口 (可以在继承一个类的同时,实现多个接口)
interface InterA{
public abstract void printA();
}
interface InterB{
public abstract void printB();
}
class Demo extends Object implements InterA, InterB{
public void printA(){
System.out.println("printA");
};
public void printB(){
System.out.println("printB");
};
}
05_抽象类和接口的区别
- A:成员区别
- 抽象类
- 成员变量:可以变量,也可以常量
- 构造方法:有
- 成员方法:可以抽象,也可以非抽象
- 接口
- 成员变量:只可以常量
- 成员方法:只可以抽象
- 抽象类
- B:关系区别
- 类与类
- 类与类为继承关系,单继承,可以是多层继承
- 类与接口
- 类实现接口,可以是单实现,也可以多实现
- 因为接口没有方法实体,都是抽象的,所以可以多实现
- 类实现接口,可以是单实现,也可以多实现
- 接口与接口
- 接口继承接口,可以单继承,也可以多继承
- 因为接口没有方法实体,都是抽象的,所以可以多继承
- 接口继承接口,可以单继承,也可以多继承
- 类与类