接口
接口
抽象类:具体实现和规范(抽象方法)都有
普通类:只有具体实现
接口:只有规范(自己无法写方法,专业的抽象!专业的约束!使得约束和实现分离:面向接口编程)
1. 什么是接口?
接口就是规范,是比抽象类还要抽象的抽象。
接口的本质是契约,就像法律一样,大家都要去遵守
OO的精髓,是对对象的抽象,最能体现这一点的就是接口
2. 声明接口
声明类的关键字是class
,声明接口的关键字是interface
,接口不是类了
//声明(定义)接口的关键字是interface
public interface UserService{}
3. 用类去实现接口,接口可多继承
接口都需要有实现类,这个实现类的类名一般后缀为Impl (implements)
3.1 创建两个接口
//创建一个接口UserService
public interface UserService {
//接口中的属性(字段)默认是常量 public static final,一般不在接口中定义常量
int AGE = 99;
//接口中的所有定义其实都是抽象的,接口里面的方法默认 :public abstract
void add(String name);
void delete(String name);
void update(String name);
void query(String name);
}
public interface TimeService {
void timer();
}
3.2 创建一个实现接口的类
//接口都需要有实现类,这个实现类的类名一般后缀为Impl (implements)
//类UserServiceImpl 要实现 接口TimeService 关键词implements
//实现了接口的类,必须要重写接口中的方法!! 接口可多继承 继承了抽象类的子类,必须要实现(如重写)抽象类的方法!!局限性:extends只能单继承
public class UserServiceImpl implements TimeService{
@Override
public void timer(){}
}
接口可多继承
//类UserServiceImpl要实现 接口UserService和接口TimeService (逗号隔开)
//类UserServiceImpl 要重写 这两个接口中的方法!!
public class UserServiceImpl implements UserService,TimeService{
@Override
public void add(String name) {
}
@Override
public void delete(String name) {
}
@Override
public void update(String name) {
}
@Override
public void query(String name) {
}
@Override
public void timer(){}
}
4. 接口的作用
/*总结接口的作用
1.接口是规范,约束
2.定义一些方法,让不同的人实现~
3.接口中方法都默认是public abstract
4.接口中的属性(字段)默认是常量,接口中常量一般默认 public static final 但是一般不在接口中定义常量
5.接口不能被实例化(因为接口都不是类,没有构造方法),抽象类也不能被实例化,不能new它。()
6.Impl类通过implements可以实现多个接口,逗号隔开,
7.Impl类要去实现重写接口中的方法。
8.总结博客
**/
5. 总结:
5.1 抽象类、普通类、接口
抽象类:具体实现和规范(抽象方法)都有
普通类:只有具体实现
接口:只有规范(自己无法写方法,专业的抽象!专业的约束!使得约束和实现分离:面向接口编程)
5.2 接口和抽象类
//一
企业中一般都用接口,因为接口可多继承,(不同的人都去实现这个接口)
而抽象类是通过extends 子类去实现抽象父类 ,extends只能单继承!java中只有单继承,(接口特殊,可多继承)
//二
抽象类:用abstract修饰 public abstract class Action {}
实现抽象类的子类:用extends继承抽象类 public abstract class A extends Action{}
声明(定义接口)(接口不是类):用interface声明 public interface UserService {}
实现接口的类:用implements public class UserServiceImpl implements UserService,TimeService{}
//三
new的本质是在调用构造器
不能new抽象类,只能靠子类去实现它:约束!
不能new接口,因为接口本身就不是类,没有构造器
//四
这里的实现一般指重写
这里的实现一般指重写