接口声明格式
[访问修饰符] interface 接口名 [extends 父接口1,父接口2…] {
常量定义;
方法定义;
}
在jdk1.8之前,接口中只有两部分内容:
- 常量,固定修饰符:public static final
抽象方法,固定修饰符:public abstract
/**
* 1.类是类,接口是接口,它们是同一层次的概念。
* 2.接口中没有构造器
* 3.接口如何声明:interface
* 4.在JDK1.8之前,接口中只有两部分内容:
* (1)常量:固定修饰符:public static final
* (2)抽象方法:固定修饰符:public abstract
* 注意:修饰符可以省略不写,IDE会帮你自动补全,但是初学者建议写上,防止遗忘。
*/
public interface TestInterface01 {
//常量:
/*public static final*/ int NUM = 10;
//抽象方法:
/*public abstract*/ void a();
/*public abstract*/ void b(int num);
/*public abstract*/ int c(String name);
}
interface TestInterface02{
void e();
void f();
}
/*
5.类和接口的关系是什么? 实现关系 类实现接口:
6.一旦实现一个接口,那么实现类要重写接口中的全部的抽象方法:
7.如果没有全部重写抽象方法,那么这个类可以变成一个抽象类。
8.java只有单继承,java还有多实现
一个类继承其他类,只能直接继承一个父类
但是实现类实现接口的话,可以实现多个接口
9.写法:先继承 再实现:extends Person implements TestInterface01,TestInterface02
*/
class Student extends Person implements TestInterface01,TestInterface02 {
@Override
public void a() {
System.out.println("---1");
}
@Override
public void b(int num) {
System.out.println("---2");
}
@Override
public int c(String name) {
return 100;
}
@Override
public void e() {
System.out.println("---3");
}
@Override
public void f() {
System.out.println("---4");
}
}
class Test{
//这是一个main方法,是程序的入口:
public static void main(String[] args) {
//10.接口不能创建对象:
//TestInterface02 t = new TestInterface02();
TestInterface02 t = new Student();//接口指向实现类 ---》多态
//11.接口中常量如何访问:
System.out.println(TestInterface01.NUM);
System.out.println(Student.NUM);
Student s = new Student();
System.out.println(s.NUM);
TestInterface01 t2 = new Student();
System.out.println(t2.NUM);
}
}
接口的作用是什么?
定义规则,只是跟抽象类不同地方在哪?它是接口不是类。
接口定义好规则之后,实现类负责实现即可。多态的应用场合:
父类当做方法的形参,传入具体的子类的对象
- 父类当做方法的返回值,返回的是具体的子类的对象
- 接口当做方法的形参,传入具体的实现类的对象
-
接口和抽象类的区别
抽象类
抽象类使用abstract修饰
- 抽象类不能实例化,即不能使用new关键字来实例化对象
- 含有抽象方法(使用abstract关键字修饰的方法)的类是抽象类,必须使用abstract关键字修饰
- 抽象类可以含有抽象方法,也可以不包含抽象方法,抽象类中可以具体的方法
- 如果一个子类实现了父类(抽象类)的所有抽象方法,那么该子类可以不必是抽象类
- 抽象类中的抽象方法只有方法体,没有具体实现
接口
- 接口使用interface修饰
- 接口不能被实现化
- 一个类只能继承一个类,但是可以实现多个接口
- 接口中方法均为抽象方法
- 接口中不能包含实例域或静态方法(静态方法必须实现,接口中方法是抽象方法,不能实现)