JAVA接口
接口
如果一个类中所有的方法都是抽象方法的话,可以将这个类重新定义——接口
接口是一个特殊的抽象类,用interface 声明,用implements 来实现
接口中所有的方法都是抽象方法,默认修饰符:public abstract
接口不能实例化--特殊的抽象类,不能实例化
接口不能有成员变量,只能存在常量
接口在jdk1.7之前不允许有普通方法,1.8之后可以有普通方法,需要用defult关键字来修饰
类与类之间使用继承,类与接口之间用implements ,表示实现关系 ,继承一定是 is a 的关系,实现是 has a 的关系
当一个类去实现接口的时候,必须实现接口中的以及接口的父接口中的所有抽象方法,或者将当前类声明为抽象类
接口A想拥有接口B的功能,可以使用继承(同类型之间都是继承),接口允许多继承,类是单继承
一个类能在继承一个类的时候实现一个接口,接口表示的是一种功能,当一个类想拥有这个功能的时候,去实现这个接口就可以了
接口中用多态时,只能调用父类或者子类中重写的父类的方法。不能调用子类特有的方法,想调用可以 new 一个子类的对象来调用或者通过转型来实现
(转型)父 t =new 子()//默认向上转型
子 z = (子) t //向下转型,将父型的 t 重转位子型的 z
接口声明的方法
public interface Aaa{ public abstract void eat();//接口中的所有方法嗾使抽象方法 viod run();//可以省略前面的修饰 }
接口的特点:
- 接口不能实例化对象
- 接口没有构造方法
- 接口中搜友的方法必须是抽象方法,默认:public absctract
- 接口不能有成员变量(public static final 常量 除外)
- 接口不是继承,而是实现(implement)
- 接口支持多实现
- 一个类可以继承一个类的时候实现多个接口
接口使用步骤
- 创建接口,声明方法
- 创建类,实现接口,实现接口中的方法
- 使用实现后的方法执行具体操作
接口与抽象类的区别
接口 |
抽象类 |
使用关键字interface |
使用关键字abstract class修饰 |
使用implements来实现 |
使用exctends来继承 |
接口中只能有抽象方法(JDK1.7以前) |
可以有普通方法和抽象方法 |
不能有构造法 |
可以有构造法 |
只能有常量 |
可以有成员变量 |
可以多继承 |
只能单继承 |
方法只能是public |
方法可以是public,protect,private |