接口的初步理解是一个特殊的抽象类,当抽象类中全部都是抽象方法时,可以通过接口的方式来体现。(关于抽象类的具体介绍可以查找之前发布的内容)
接口提高功能的扩展性,降低了事物之间的耦合性。
接口中成员的格式:
public final static String PERSON_NAME="人名"; //全局常量
public abstract void function(); //抽象方法
这两种书协格式是没有什么差别的,第二种是省略的写法,只是在编译期间,会默认的变成第一种的写法。所以接口中不存在成员变量,全部都是全局常量。
接口中只能使用public修饰符,不允许使用protected private default。
但接口不允许创建对象,因为里面是抽象方法,需要被子类实现所有的抽象方法,子类才能够实例化,否则子类也是一个抽象类。
抽象类不允许通过new关键字创建对象,但可以通过对象的向上转型创建实例,如下:
接口不允许存在构造函数,抽象类可以。
子类实现多个接口时,必须实现所有接口中的抽象方法,否则子类也是抽象类。
关于接口为什么可以多实现,而类只能单继承。如下:
子类重写两个接口中的walk方法,子类继承多个类时,我们创建对象C类的实例并show()方法时,那么调用的是Y还是B呢?所以多继承存在安全隐患,java中不允许多继承。
类与类存在继承关系,接口与类存在实现关系,接口与接口之间存在继承关系
由此可知,实现一个接口的方法时,还要实现此接口继承其他接口的所有方法。
注:接口中不存在子类 只存在实现关系,本文只是为了方便介绍采用子类的说法,实际上都是称某某接口的实现类。附上包与包之间访问权限图解:
本文暂时没有评论,来添加一个吧(●'◡'●)