一、接口初期理解:特殊的抽象类,当抽象类的方法都是抽象的,那么该类可以通过接口的形式来表示
class 用于类
interface用于定义接口
二、接口定义时的格式特点:
1.接口中常见定义:常量,抽象方法
2.接口中的成员都有固定修饰符(可以省略,但是为了理解,全写上)
常量:public static final 常量名大写
方法:public abstract
记住:接口中的成员都是public
三、继承与实现区别
子类继承(extends)父类:继承,指的是子类可以直接用父类的某些成员变量或者成员方法,即使继承抽象类,抽象类中也可以包含非抽象的成员,直接继承过来。
类实现(implements)接口:根据接口的特点,接口中的东西必须是抽象的,必须通过全部复写才能创建实例,更准确来讲,就是必须实现全部。
interface Inter
{
public static final int NUM=3;
public abstract void show();
}
class Test implement Inter
{
通过对接口简单理解:继承。那么抽象方法都会继承到,若不不实现,还是抽象方法,还是抽象类,无法建立对象。
}
总结:
接口:是不可以创建独享的,因为有抽象方法。
需要子类实现,子类对接口中的抽象方法全部覆盖后,子类才可以实例化,否则子类是个抽象类
public abstract class Inter {
public static final int NUM=4;
public abstract void show();
}
public class subInter extends Inter {
@Override
public void show() {
// TODO Auto-generated method stub
System.out.println("我实现了接口inter哈哈哈哈");
}
}
public class Demo {
public static void main(String[] args) {
// TODO Auto-generated method stub
subInter si=new subInter();
System.out.println(si.NUM);
System.out.println(subInter.NUM);//根据继承思想,静态可用类名访问
System.out.println(Inter.NUM);//常量,根据类的思想,也可以这样写:接口名.常量名
//si.NUM=2;这是错误的,常量不能再赋值
}
}
四、接口可以被类多实现,也是对多继承不支持的转换形式。
类为啥能够实现多个接口?之前说过继承只能单继承
举个栗子:
interface Inter
{
public static final int NUM=3;
public abstract void show();
}
interface InterA
{
public abstract void show();
}
class Test implement Inter,InterA
{
public void show(){执行语句}
}
关键在于接口中的方法全是抽象的,没实现,在实现类中实现了这个抽象方法,不存在执行哪个同名函数出现不同结果的问题,不存在二义性,所以支持多实现。五、接口也支持单继承和多继承
interface A
{
public abatract void methodA();
}
interface B extends A
{
public abatract void methodB();
interface C extends B
{
public abatract void methodC();
class D implements C
{
//必须覆盖三个函数
public void methodA(){}
public void methodB(){}
public void methodC(){}
}
①一般的多继承
interface A
{
public abatract void methodA();
}
interface B
{
public abatract void methodB();
interface C extends B,A
{
public abatract void methodC();
class D implements C
{
//必须覆盖三个函数
public void methodA(){}
public void methodB(){}
public void methodC(){}
}
②多继承不能出现二义性
interface A
{
public abatract int show();
}
interface B
{
public abatract boolean show();
interface C extends B,A
{
public abatract void methodC();
class D implements C
{
public int show(){}
public boolean show(){}
}
当创建对象d,调用d.show(),不知道返回什么,出现二义性,而且,D中show()方法也不是重载(参数列表不同)
六、接口的特点(就是对以上的总结)
①接口是对外暴露的规则
②接口是程序的功能拓展
③接口可以用来多实现
④类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口
⑤接口与接口之间可以有继承关系