java接口
注意事项:
接口不能被实例化。
接口所有的方法试public 方法 接口中抽象方法,可以不用关键字 abstract修饰。11111
void aaa();
实际上是abstract void aaa();
一个普通类实现接口,就必须将该接口的所有方法都实现 ,否则编译器报错。
抽象类实现接口,可以不用实现接口方法。
一个类可以同时实现多个接口。
class Pig implements IB,IC {
@Override
public void hi() {
}
@Override
public void say() {
}
}
接口中的属性只能是final的, 而且是public static final 修饰符,比如:
Int a=1;
等同于public static final int a=1;(必须初始化)
接口中的属性访问形式:接口名.属性名
接口不能继承其他的类,但是可以继承多个别的接口;
interface A extends B,C{}
接口的修饰符只能是public和默认 这点与类的修饰符是一样的。
接口与继承的区别:
当子类继承了父类,就自动的拥有父类的功能
如果子类需要扩展功能,可以通过实现接口的方式扩展.
可以理解 实现接口 是 对 java 单继承机制的一种补充。
接口和继承解决的问题不同:
继承的价值主要在于:解决代码的复用性和可维护性。 接口的价值主要在于:设计 设计好各种规范方法 让其他类去实现这些方法,更加的灵活。
接口比继承更加灵活,在一定程度上实现代码的解耦【接口规范性和动态绑定机制】
接口的多态体现
package _interface;
public class InterfacePolyParameter {
public static void main(String[] args) {
//接口的多态实现
// 接口类型的变量if01 可以指向 实现了IF接口对象的实例
IF if01 = new Car();
if01 = new Key();
// 继承体现的多态
//父类类型的变量a 可以指向 继承了AAA的子类的对象实例
AAA a = new BBB();
a=new CCC();
}
}
interface IF {
}
class Car implements IF {
}
class Key implements IF {
}
class AAA {
}
class BBB extends AAA {
}
class CCC extends AAA {
}
package _interface;
public class InterfaceArr {
public static void main(String[] args) {
Usb[] usbs=new Usb[2];
Phone_ phone = new Phone_();
Camera_ camera = new Camera_();
usbs[0]=phone;
usbs[1]=camera;
for (int i = 0; i < usbs.length; i++) {
usbs[i].work();
//我们需要对类型进行向下转型 instanceof 判断的是运行类型
if(usbs[i] instanceof Phone_){//instanceof 判断的是运行类型
((Phone_) usbs[i]).call();
}
}
}
}
interface Usb{
void work();
}
class Phone_ implements Usb{
public void call(){
System.out.println( "打电话");
}
@Override
public void work() {
System.out.println("手机工作");
}
}
class Camera_ implements Usb{
@Override
public void work() {
System.out.println( "相机工作");
}
}
接口多态传递
package _interface;
/**
* 演示多态传递现象
*/
public class InterfacePolyPass {
public static void main(String[] args) {
//接口类型的变量指向 实现了该接口的类的对象实例
IG ig = new Tercher();
//如果IG 继承了IH接口 而Teacher 类实现了IG接口
//那么 实际相当于Teacher 类实现了IH接口
//这就是所谓的接口多态传递现象
IH ih = new Tercher();
}
}
interface IH {
}
interface IG extends IH {
}
class Tercher implements IG {
}