JAVA_接口
理解:抽象类中可以定义抽象方法也可以定义非抽象方法,如果抽象类中的方法全是抽象方法,那么可以把它表现成另外一个形式“接口”
关键字:interface*(区别于class ,class用于定义类,interface定义接口)*
接口定义的格式特点:
1.接口中常见定义:常量、抽象方法
2.接口中的成员都有固定修饰符
常量:public static final
方法:public abstract
3.接口中的成员都是public
4.定义接口修饰符public、static、final、abstract可以省略,因为有关键字interface系统会自动补齐,但为了使代码可读性强一点最好都写全
interface Inter{
public static final int NUM = 3;
public abstract void show();
}
接口的特点:
1.类可以继承类,因为父类中有非抽象方法可以直接拿来用
而接口中的方法全是抽象方法,不能直接用,所以子类需要实现这个接口,才能使用接口中的抽象方法
2.接口不可以创建对象,因为有抽象方法,需要被子类实例化,子类对接口中的抽象方法全部覆盖后,子类才可以实例化,否则子类是一个抽象类
class Test implements Inter //子类实现接口
{
public void show(){} //覆盖接口的抽象方法
}
class InterfaceDemo
{
public static void main(String[] args)
{
Test t = new Test();
System.out.println(t.NUM);
System.out.println(Test.NUM);
System.out.println(Inter.NUM);
} /*不能对NUM进行赋值,因为是常量*/
}
3.接口可以被多实现,这也是java对多继承不支持的转换形式
** 基于以上代码再增加一个接口**
interface InterA
{
public abstract void method();
}
**多实现的写法**
class Test implements Inter,InterA
{
public void show(){}
public void method(){} //覆盖抽象方法
}
一个类既可以继承也可以实现
例:
class Demo
{
public void function(){}
}
class Test extends Demo implements Inter,InterA /*Test类既继承Demo又实现Inter,InterA接口*/
{
public void show(){}
public void method(){} //覆盖抽象方法
}
4.接口与接口的关系是继承,并且接口与接口之间可以多继承
例:
interface A
{
void methodA();
}
interface B extends A
{
void methodB();
}
interface C extends B
{
void methodC();
}
Class Demo implements C
{
public void methodA(){}; /*Demo类需要覆盖三个抽象方法*/
public void methodB(){};
public void methodC(){};
}