秦疆的JavaSE课程笔记:75 面向对象 接口的定义与实现
- 区别
- 普通类:只有具体实现。
- 抽象类:具体实现和规范(抽象方法)都有。
- 接口:只有规范,自己无法写方法。专业的约束。约束和实现分离:面向接口编程。
- 接口就是规范,定义的是一组规则。
- OO的精髓,是对对象的抽象,最能体现这一点的就是接口。为什么讨论设计模式都只针对具备抽象能力的语言(C++、Java、C#等),因为设计模式研究的,就是如何合理的抽象。
- 声明类的关键字是
class
,声明接口的关键字是interface
。 - 例如:
public interface UserService {
public abstract void run();
}
- 实际上,接口中所有的定义其实都有
public abstract
修饰,也就是抽象方法。IDEA中会直接将这两个修饰词标记灰色,意思是可以不写。
public interface UserService {
public static final int AGE = 99;
}
-
接口中定义的属性都有
public static final
修饰,也就是静态的常量。同样会被IDEA标灰,可不写。(秦疆老师:很少有人这么玩。) -
接口都需要实现类。
//接口UserService用户服务,增删改查
public interface UserService {
void add(String name);
void delete(String name);
void update(String name);
void query(String name);
}
//接口TimeService时间服务
public interface TimeService {
void timer();
}
//实现类
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() {
}
}
- 类名中的
Impl
即是关键词implement
,实施、贯彻、执行。 - 实现了接口的类,就需要重写接口中的方法。
- 未重写接口的方法之前,报错是正常的,重写后就不会报错了。
- 可以通过
Alt
+Insert
快捷键,选择“重写接口”选项,也可以使用Ctrl
+I
直接重写接口。 - 接口可以实现多继承。