接口

接口

接口的目的就是定义一些方法,让不同的人实现

注:接口可以作为方法的形参或者返回值,需要和返回的都是该接口的实现类对象


普通类:只有具体实现

抽象类:具体实现和规范(抽象方法)都有

接口:只有规范,没有具体实现

注:抽象类和接口虽然都无法实例化对象,但是他有构造方法,而接口没有

java规定类都要有一个构造方法,没有默认提供一个空参构造(抽象类也是类)。构造方法不是用来实例化的,而是用来给属性初始化赋值的,抽象方法可以定义属性(抽象和普通),那么就需要构造方法(有参和无参)给属性赋初值。这里就可以理解为什么接口没有构造方法了所以属性必须是常量了。

还可以从另一个角度理解,抽象类必须有实现类继承(extends)来实现,初始化一个子类会先初始化父类。所以抽象类要有构造方法


  • 接口的关键字为:interface
  • 接口都需要有实现类,关键字:implements

implements英文释义:使生效,贯彻,执行

  • 接口中的方法都默认(且必须)带有修饰符public abstract
  • 接口中的属性都默认(且必须)带有修饰符public static final
  • implements可以实现多个接口
  • 和抽象类相同,在实现类中必须要重写接口中所有方法(默认为抽象方法)

接口UserService

1
2
3
4
5
6
public interface UserService {
void add(String name);
void delete(String name);
void update (String name);
void query (String name);
}

接口TimeService

1
2
3
public interface TimeService {
void timer();
}

调用接口的实现类(实现类可以implements多个接口,且必须要重写接口中每一个(抽象)方法)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class UserServiceImpl implements UserService,TimeService{
@Override
public void timer() {

}

@Override
public void add(String name) {

}

@Override
public void delete(String name) {

}

@Override
public void update(String name) {

}

@Override
public void query(String name) {

}
}

匿名内部类与接口的实现

接口无法直接实例化对象,因为没有构造方法。只能通过实现类重写接口方法之后,用实现类来实例化对象。这里可以使用多态,和匿名内部类来操作:

接口引用指向匿名内部类(父类引用指向子类对象)

可以虚假的实现 “接口实例化对象”

具体操作可以看匿名内部类笔记


接口
http://blog.170827.xyz/2022/07/24/接口/
作者
XIAOBAI
发布于
2022年7月24日
许可协议