*接口:
概述:
接口就是一种公共的规范标准,只要符合规范标准,大家都可以使用
Java中的接口更多的体现在对行为的抽象
关键字:
①interface
②implements
特点:
①接口的实现用 implements 接口名 来表示
②接口是抽象的内容,不能直接实例化,可以通过多态的方式间接实例化
③如果是具体类,当实现了一个接口就必须重写该接口的抽象方法
如果是抽象类,当实现了一个接口不一定需要重写该接口的抽象方法
多态的形式:
具体类多态 , 抽象类多态 , 接口多态(后面两个常用)
多态的前提:
①有继承或者实现关系
②有方法重写
③有父(类/接口)引用指向(子/实现)类对象
成员特点:
①可以拥有成员常量,但是没有成员变量
②可以通过接口名直接访问成员常量
*以上总结是:
成员常量都有系统默认给的 public 、 static 、 final 关键字修饰
即public static final 数据类型 常量名 = 值;
③接口里面没有构造方法,因为接口只是对行为进行抽象所以是没有具体存在的
④接口里面只能有抽象方法,不能有非抽象方法,同时自带系统默认的public abstract的关键字修饰
注意:每一个类都是默认直接或者间接继承至object类,object是每个类的超类或基类,
同时它自带无参构造方法。
如果子类继承父类抽象类同时实现接口,两种的抽象方法在多态的情况下不能同时写,除非强制转换
或者不用多态,而是用子类直接创建子类对象,毕竟子类是拥有最多内容的
类和接口的关系:
类和类的关系:
继承关系,只能单继承,但是可以多层继承
类和接口的关系:
实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时
实现多个接口
即类可以实现多个接口,还可以继承一个类并实现多个接口
*接口与接口的关系:
继承关系,可以单继承,也可以多(多层和多个)继承,Java中的多继承是体现在接口与接口之间
抽象类和接口的区别:
一、成员区别:
抽象类 变量(抽象),常量;有构造方法;有抽象方法
接口 常量;抽象方法
二、关系区别:
类与类 继承,单继承
类与接口 实现,可以单实现,也可以多实现
接口与接口 继承,单继承,多(多层和多个)继承
主要是设计理念的区别:
抽象类 对类抽象,包括属性、行为
接口 对行为抽象,主要是行为
即抽象的属性和行为可以通过外界进行定义,非抽象的属性和行为则不需要有外界定义
(不用重写也能表达方法体的内容或者直接输出属性值)
用处指向(抽象类和接口):
例如:一个物品具有本身就拥有的功能(继承具有同类物品属性和行为的抽象类),
同时在创新发展的过程中,在这个物品上开发并安装了新(额外)的功能
(实现接口)
*注意:抽象类是对事物的抽象,而接口是对行为的抽象