接口
简单定义:
使用关键字 interface来定义接口
interface 接口名{
}
广义解释:相当于一个规范 需要人来遵守
接口中可以写:
1.抽象方法,并且可以省去 public abstract 两个关键字
2.静态常量 并且可以省去 public static final 三个关键字
然后我们来看一个简单的关于接口的demo
// 声明一个接口
interface InterA{
// 静态常量
int num = 10;
// 抽象方法
void fun();
}
// 规范:实现类的类名后缀 Impl
class InterAImpl implements InterA{
// 实现接口中的抽象方法
@Override
public void fun() {
System.out.println(num);
System.out.println("我是实现类的fun");
}
}
那么通过之前的学习,您一定会发现 抽象类其实和接口有类似,那么他们有什么不同呢
抽象类和接口的区别?
1.使用方式
抽象类:继承 extends
接口: 实现 implements
2.成员变量
抽象类: 变量 常量
接口: 常量 默认就是public static final 修饰
3.成员方法
抽象类: 抽象方法 成员方法
接口: 只能有抽象方法 还可以有静态方法 和默认方法
4.构造方法
抽象类: 有构造
接口: 没有
我们再来看看静态方法和默认方法吧
interface interF{
// 抽象方法
void fun1();
// 静态方法
public static void fun2() {
System.out.println("static function");
}
// 默认方法.
public default void fun3() {
System.out.println("default function");
}
}
class interFImpl implements interF{
// 重写抽象方法
@Override
public void fun1() {
}
// 重写默认方法
@Override
public void fun3() {
System.out.println("i'm classimpl default function");
}
// 静态方法
public static void fun2() {
System.out.println("i'm classimpl static function");
}
// 成员方法
public void test() {
// 调用接口中静态方法
interF.fun2();
// 调用接口中的默认方法
interF.super.fun3();
}
}
然后在main方法中测试一下
public static void main(String[] args) {
// 调用接口的静态方法
interF.fun2();
interF f = new interFImpl();
// 调用实现类中的静态方法
interFImpl.fun2();
interFImpl fImpl = (interFImpl)f;
fImpl.fun3();
fImpl.test();
}
控制台将会打印
static function
i'm classimpl static function
i'm classimpl default function
static function
default function