概念:
- 接口是一种有特殊的抽象类,使用 interface 关键字声名
public inerface 接口名{
}
特点:
1. 接口中所有方法都是公开的抽象方法,
public abstract void 方法();
2. 接口中所有变量都是全局静态常量(默认public final修饰),全局通用,不能改变
3. 接口与类关系:实现关系 implements
public void 类名 implements 接口名{
//重写所有接口方法
}
4. 接口也有多态性
5. 不同于类只能单继承,接口支持多实现
public void 类名 implemnents 接口1,接口2{
}
6. 类实现接口后重写方法的快捷键:
Source -> Override/implement Methods
作用:接口可以把很多不相关的内容进行整合
part 1 接口
package practice.p1;
/*
* 能继承接口的只能是接口
* 接口和类关系:实现关系 implements
*/
public interface Valuable { //接口使用interface声明,他不再是类了
// 接口中所有的方法都是抽象方法,可以省略掉abstract
// 接口中所有的内容都是公开的,公共的
public abstract void getMoney();
void getValue(); //可以不写public void
// public void get() { 接口中所有的方法都是抽象方法,不能有正常方法
// }
}
package practice.p1;
public class Gold implements Valuable{ //实现关系
public void getMoney() { //重写方法
System.out.println("Gold can change money.");
}
public void getValue() {
System.out.println("Gold is of great value.");
}
}
package practice.p1;
public class Spot {
public static void main(String[] args) {
Valuable g = new Gold(); //接口也有多态性
g.getMoney();
g.getValue();
}
}
part 2 接口的多实现
package practice.p1;
public class Animal {
public void eat() {
System.out.println("Animal eat");
}
}
package practice.p1;
public interface Protectable {
public void hide();
}
package practice.p1;
//类可以继承一个类,实现多个接口
public class Panda extends Animal implements Valuable,Protectable{
@Override //重写(快捷键)
public void getMoney() {
System.out.println("Panda can get money");
}
@Override
public void getValue() {
System.out.println("Panda is of value");
}
@Override
public void eat() {
System.out.println("Panda eat bamboo");
super.eat();
}
@Override
public void hide() {
System.out.println("Panda should hide");
}
}
part 3 接口变量都是全局静态常量
package practice.p1;
public interface Protectable {
int money = 10; //默认为public static final,为常量
}
package practice.p1;
public class Spot {
public static void main(String[] args) {
// Protectable.money=10; final变量,不能被改写
System.out.println(Protectable.money);
}
}