接口
1、使用interface修饰,接口中全是抽象方法
例如:
public interface Animal{
//只有抽象方法
public void work();
public void eat();
}
2、接口和抽象类区别
1)抽象类的本质仍然是类,还是使用关键字class,除了可以写抽象方法和不能使用new关键字外,其他的和普通类一样
2)接口是另一种类型,本质和类不同(理解上可以认为一个抽象类抽象到极致,即全是抽象方法,就变成了抽象类;这个仅限于便于理解)
3)声明类的关键字是class,声明接口的关键字是interface
4)抽象类是用来被继承的,java中的类是单继承
5)接口是用来被类实现的,java中的接口可以被多实现,接口也可以继承是多继承
注:继承的关键字是extends,实现的关键字是implements
3、接口中的方法都是抽象方法
接口中可以不写方法,但只要在接口中写方法,这个方法就必须是抽象方法
例如:
public interface Animal{
public abstract void run();
//默认就是public abstract修饰的
void eat();
//默认有abstract
public void sleep();
}
4、接口中的变量都是静态常量(public static final修饰)
接口中可以不写任何属性,但如果写属性就必须是public static final修饰的静态常量。
注:可使用接口名直接访问,静态的public static修饰;
因为接口中的变量是静态常量,并且接口中不能编写静态代码块,所有声明的同时必须进行赋值
例如:
public interface Action{
public static final String NAME = "tom";
//默认就是public static final修饰的
int AGE = 20;
}
main:
System.out.println(Action.NAME);
System.out.println(Action.AGE);
5、一个类可以实现多个接口,使用,隔开
例如:
public Student implements A,B{
//实现多个接口,要实现接口中的所有抽象方法;否则就要声明成抽象类
//Student 对象可以使用A、B、Student类型的的引用指向
}
main:
A s1 = new Student();
B s2 = new Student();
Studnet s3=new Student();
注:
s1只能调用接口A中声明的方法以及Object中的方法
s2只能调用接口B中声明的方法以及Object中的方法
s3可以使用AB接口中声明的方法以及Object中的方法
6、一个接口可以继承多个父接口
例如:
public interface A{
public void testA();
}
public interface B{
public void testB();
}
//接口C把接口A B中的方法都继承过来了
public interface C extends A,B{
public void testC();
//继承了AB接口的抽象方法,要实现C接口ABC三个接口的所有抽象方法都有实现
}