- 概念:如果一个类中所有的方法都是抽方法,则这个类就可以表示为Java中另外一种类型,即接口。
- 接口是一种特殊的抽象类。
接口定义格式:
[修饰符] interface <接口名> extends 父类接口1,父类接口2...
{
//属性和方法的定义
}
- 接口的结构与类完全相同。
- 接口的访问控制修饰符与类一样, 但只有public和默认两种。
- 接口的声明要使用关键字interface,声明类的关键字是class。
- 接口中所有的方法都是抽象方法,默认的修饰符为“public abstrecr".在定义中可以省略。例如,“void eat ();” 表示定义了一个抽象方法eat ()。
- 接口中所有的变量都是全局常量,默认的修饰符为“publice static final", 在定义中可以省略。例如,“int a=10;"表示定义了一个全局常量a。
- 接口可以继承多个其他接口,即通过接口实现了多重继承。
- 接口不能被实例化,接口中没有构造方法,需要通过一个类来实现接口中所有抽象方法,才能被实例化,这个类可以称为接口的实现类。实现接口使用关键字implements。
- implements可以实现多个接口。
- 实现接口必须重写接口中的方法。
- 接口的本质是契约。
接口的作用:
- 约束
- 定义一些方法,让不同的人实现。
- 接口中默认的方法:public abstract
案例一
定义两个接口:UserService、TimeService
public interface UserService {
//定义一个属性 (常量)public static final
int AGE = 69;
//接口都需要有实现类
//接口中的所有定义方法都是抽象的 public abstract
//定义四个方法
void add(String name);
void delete(String name);
void update(String name);
void query(String name);
}
public interface TimeService{
void timer();
}
定义一个实现类:UserServiceImpl
//实现接口的类,需要重写接口中的方法
//一个类可以实现接口,通过关键字implements
//
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() {
}
}
案例二
创建一个接口,定义两个方法
public interface UserService {
void eat();
void run();
}
创建两个子类,定义方法的具体细节。
public class Person implements UserService{
@Override
public void eat() {
System.out.println("大家在吃东西");
}
@Override
public void run() {
System.out.println("大家在跑步");
}
}
public class Student implements UserService{
@Override
public void eat() {
System.out.println("学生在吃零食");
}
@Override
public void run() {
System.out.println("学生在跑步");
}
}
创建一个Application类
public class Application{
public static void main(String[] args) {
Person person = new Person();
Student student = new Student();
person.run();
person.eat();
student.run();
student.eat();
}
}
运行结果:
案例三:接口的多继承
创建两个接口
public interface TimeService {
void eat();
}
public interface UserService {
void run();
}
创建两个子类
public class Person {
String name = "林枫";
int age = 20;
public void show(){
System.out.println("姓名:"+name+"\t年龄:"+age);
}
}
public class Student extends Person implements TimeService,UserService{
@Override
public void eat() {
System.out.println("在吃饭");
}
@Override
public void run() {
System.out.println("在比赛");
}
}
创建一个Application类
public class Application {
public static void main(String[] args) {
Person person = new Person();
Student student = new Student();
student.show();
student.eat();
student.run();
}
}
运行结果: