什么是接口?
比抽象类更加抽象的表现形式,就是接口
接口的定义格式?
interface 接口名 {
}
接口不是类
接口的使用格式?
interface Inter {
}
class Zi implements Inter {
}
接口的特点?
1.接口不能创建对象
2.一个类想要实现一个接口,要么该类是一个抽象类,要么该类是一个普通类,就必须重写接口中的所有的抽象方法
接口的成员特点?
1.成员变量:
接口中的所有的变量全部都是自定义常量
默认修饰符:public static final
public static final int i = 1;
static final int j = 1;
int x = 1;
2.成员方法:
接口中的所有的方法都是抽象方法(错误的解释)
默认修饰符:public abstract
public abstract void aaa();
abstract void bbb();
public void ccc();
void ddd();
3.构造方法:
接口中没有构造方法
接口与接口,类与类,接口与类之间的关系?
类与类:继承关系,单继承,不可以多继承,也可以实现其他的接口
class Fu {
public void eat() {
System.out.println("吃肉");
}
}
class Zi extends Fu {
}
类与接口:实现关系,支持单实现,也可以多实现
interface Inter {
}
interface Inter1 {
}
class Zi implements Inter, Inter1 {
}
接口与接口:继承关系,支持单继承,也可以多继承
interface A {
public abstract void eat();
}
interface B {
}
interface C extends A, B {
}
class Zi implements C {
public void eat() {
}
}
我们什么时候使用接口,什么时候使用类(包含抽象类)?
当两个类之间存在"is a",就要定义类,两个类之间是继承关系
接口是额外扩展的功能,本身该类不具备这个功能,而且还不是"is a"的关系,就需要去实现这样的接口了
举例子:
abstract class Animal {
public abstract void eat();
public void drink() {
System.out.println("喝水");
}
}
class Dog extends Animal implement Aircarft {
public void play() {
System.out.println("玩球");
}
public void swimming() {
System.out.println("狗刨");
}
public void fly() {
System.out.println("上下飞");
}
}
class Cat extends Animal implements Aircarft {
public void sleep() {
System.out.println("睡觉");
}
public void fly() {
System.out.println("斜着飞");
}
}
class Pig extends Animal implements Swim, Aircarft {
public void gong() {
System.out.println("拱树");
}
public void swimming() {
System.out.println("猪刨");
}
public void fly() {
System.out.println("横着飞");
}
}
interface Swim {
public abstract void swimming();
}
interface Aircarft {
public abstract void fly();
}