java中的接口
知识点:java中接口相关概念,接口与实现类之间存在的多态性
一:java中接口相关概念
(1)接口的定义
接口(interface)是一个与类并行的概念,接口中提供了一些特定的功能
(2)接口的特征
a.接口定义是一种功能,该功能可以被类所实现(implements)例如:class B extends C implements A ,D{}
b.接口可以看做一个特殊的抽象类,是常量和抽象方法的一个集合,不能包含变量、一般的方法
c.接口中是没有构造器的
d.实现接口的类,必须重写接口中所有的抽象方法,若没有重写所有的抽象方法,则此类为一个抽象类
e.类可以实现多个接口,而java中的类继承是单继承的
f.接口与接口之间也是继承关系,而且是可以实现多继承的(接口之间继承)interface E extends A,D{} (A,D为interface)
public interface A {
int I=0; // public static final 省略了
void method1();//public abstract 省略了
void method2();
}
class C{
}
interface D{
void method3();
}
class B extends C implements A ,D{
@Override
public void method1() {
}
@Override
public void method2() {
}
@Override
public void method3() {
}
}
//接口与接口之间是继承,可以是多继承
interface E extends A,D{
}
二:接口与实现类之间存在的多态性
接口与具体的实现类之间存在的多态性,即调用一些实现包含接口抽象方法的方法,方法有接口形参参数,调用时可以传入实现类的实例作为实参,如下红色标记代码 Runner run=new Person()
//接口与具体的实现类之间存在的多态性
class PersonTest{
public static void main(String[] args) {
Person p=new Person();
PersonTest.oneSkill(p);
PersonTest.twoSkill(p);
}
public static void oneSkill(Runner run){ //Runner run=new Person()
run.run();//虚拟方法调用
}
public static void twoSkill(Eat e){ //Eat e=new new Person();
e.eat();
}
}
interface Runner {
void run();//public abstract
}
interface Eat{
void eat();
}
class Person implements Runner,Eat{
@Override
public void run() {
System.out.println("跑步");
}
@Override
public void eat() {
System.out.println("吃饭");
}
}
运行结果: