接口
- 图片来自B站狂神说
1. 注意点:
-
抽象类用abstract声明定义,而接口用interface声明定义
-
抽象类继承用extends,单继承;而接口继承用implements,可以多继承
-
子类继承接口后,必须重写接口中所有的类,否则子类定义为抽象类
-
接口中只能定义抽象方法,不能定义普通方法
-
接口里面的组成只有抽象方法和全局常量,所以很多时候为了书写简单,可以不用写public abstract 或者public static final。
-
接口不能被实例化,要通过普通子类实例化,接口中没有构造方法
2. 作用:
- 进行程序框架的一种约束以及规范,定义一些程序需要的方法,让不同的人去实现
3. 接口的使用:
- 定义接口,使用interface定义
package oop.Demo08;
public interface UserService {
void add(String name);
void delete(String name);
void update(String name);
void query(String name);
}
- 若子类同时继承接口和抽象类,格式如下
public class UserServiceImpl extends Student implements UserService, TimeService
- 一个抽象类只能继承一个抽象类,但一个接口却可以使用extends关键字同时继承多个接口(但接口不能继承抽象类)
interface A{
void run1();
}
interface B{
void run2();
}
//C接口同时继承了A和B两个接口
interface C extends A,B{
//接口使用extends继承接口
void run3();
}
class X implements C{
@Override
public void fun1() {
}
@Override
public void fun2() {
}
@Override
public void fun3() {
}
}
实例化代码示例:
package oop.Demo08;
public interface UserService {
void add(String name);
void delete(String name);
void update(String name);
void query(String name);
}
package oop.Demo08;
public interface TimeService {
void time();
}
package oop.Demo08;
public abstract class Student {
public abstract void test();
}
package oop.Demo08;
public class UserServiceImpl extends Student implements UserService, TimeService {
@Override
public void time() {
System.out.println("time");
}
@Override
public void add(String name) {
System.out.println("add"+name);
}
@Override
public void delete(String name) {
System.out.println("delete"+name);
}
@Override
public void update(String name) {
System.out.println("update"+name);
}
@Override
public void query(String name) {
System.out.println("query"+name);
}
@Override
public void test() {
}
}
package oop.Demo08;
public class Application {
public static void main(String[] args) {
UserServiceImpl userService = new UserServiceImpl();
userService.time(); //time
userService.add("yang"); //addyang
userService.delete("yang"); //deleteyang
userService.query("yang"); //queryyang
userService.update("yang"); //updateyang
System.out.println("=========================");
UserService userService1 = new UserServiceImpl();
userService1.add("study"); //addstudy
//userService1.time(); 报错
System.out.println("========================");
TimeService userService2 = new UserServiceImpl();
userService2.time(); //time
//userService2.add("study"); 报错
}
}