接口的概述
接口就是一种公共的规范标准 只要符合规范标准,就可以通用
接口定义的基本格式
接口就是多个类的公共规范 接口是一个引用数据类型,最重要的内容就是其中的抽象方法 定义一个接口的格式:
public interface 接口名称
{
}
备注:换成关键字interface之后,编译生成的字节码文件仍然是,.java–>.class java7接口包含内容:常量,抽象方法 java8可以额外包括:默认方法静态方法 java9还可以包含:私有方法
接口使用步骤: 1 接口不能直接使用,必须要有一个“实现类”来“实现”该接口 public class 实际类名称 implements 接口名称 { } 2接口的实现类必须覆盖重写(实现)接口中所有抽象方法 实现:去掉abstract关键字,加上方法体大括号 3 创建实现类的对象,进行使用
抽象方法
public interface MyInterfaceAbstract
{
public abstract void methodAbs();
}
public class MyInterfaceAbstractImp1 implements MyInterfaceAbstract
{
@Override
public void methodAbs()
{
System
.out
.println("抽象方法");
}
}
public class Demo
{
public static void main(String
[] args
)
{
MyInterfaceAbstractImp1 imp1
=new MyInterfaceAbstractImp1();
imp1
.methodAbs();
}
}
默认方法
public interface MyInterfaceDefault
{
public abstract void methodAbs();
public default void methodDefault()
{
System
.out
.println("默认方法");
}
}
实现类a
public class MyInterfaceDefaultA implements MyInterfaceDefault
{
@Override
public void methodAbs()
{
System
.out
.println("抽象方法a");
}
}
实现类b
public class MyInterfaceDefaultB implements MyInterfaceDefault
{
@Override
public void methodAbs()
{
System
.out
.println("抽象方法b");
}
public default void methodDefault()
{
System
.out
.println("默认方法b");
}
}
}
public class Demo2
{
public static void main(String
[] args
)
{
MyInterfaceDefaultA a
=new MyInterfaceDefaultA();
a
.methodAbs();
a
.methodDefault();
MyInterfaceDefaultB b
=new MyInterfaceDefaultB();
b
.methodDefault();
}
}
静态方法
public class MyInterfaceStatic
{
public static void methodStatic()
{
System
.out
.println("这是一个静态方法");
}
}
public class MyInterfaceSaticImp1 implements MyInterfaceStatic
{
}
public class demo
{
public static void main(String
[] args
)
{
MyInterfaceStatic
.methodStatic();
}
}
私有方法
public interface MyInterfacePrivateA
{
public default void methodDefault1()
{
System
.out
.println("默认方法1");
}
public default void methodDefault2()
{
System
.out
.println("默认方法2");
}
private void methodCommmon()
{
System
.out
.println("aaa");
}
}
public class MyInterfacePrivateAImp1 implements MyInterfacePrivateA
{
}
接口中常量的定义和使用
public interface MyInterfaceConst
{
public static final int num
=10;
}
接口总结
1 成员变量其实是常量,格式: [public] [static] [final] 常量名称=数据值; 注意: 常量必须赋值,一旦赋值不可改变 常量名称大写,用下划线分割 2 抽象方法 [public][abstract] 返回值类型 方法名称(参数列表); 注意:实现类要重写抽象方法 3 默认方法 public default 返回值类型 方法名称(参数列表) {方法体} 注意 默认方法可以被覆盖重写 4 静态方法 【public】static 返回值类型 方法名称(参数列表) {方法体} 注意 应该通过接口名称进行调用 5 私有方法 private 返回值类型 方法名称(参数列表) {方法体} private static 返回值类型 方法名称(参数列表) {方法体} 只有接口自己调用
继承父类并实现多个接口
接口不能有静态代码快和构造方法 一个类可以实现多个接口 多个接口中覆盖抽象方法重复,只用复写一个 如果没有实现所有抽象方法,那么实现类一定是抽象类 如果接口中默认方法冲突,那么一定要重写冲突方法 一个类如果直接父类当中的方法,和接口中的默认方法产生了冲突,优先使用父类当中的方法
接口中的多继承
1 类与类之间是单继承的,直接父类只有一个 2 类与接口之间是多实现的,一个类可以实现多个接口 3 接口和接口之间是多继承的
一个接口能继承另一个或者多个接口,这和类之间的继承比较相似。 接口的继承使用 extends 关键字,子接口继承父接口的方法。 如果父接口中的默认方法有重名的,那么子接口需要重写一次。(带着default关键字)