接口就是一个公共标准,只要符合要求,大家可以一起使用。java中对接口更多体现在对行为的封装。

接口用关键字interface修饰:示例 public interface 接口名{}
类实例接口用implements 来“继承 ”:示例public class 类名 implements 接口名{}
接口实例化:参考多态。
多态形式:抽象类多态,接口多态
多态前提: 有继承或实现的关系,方法重写,父类/接口引用指向子类/实现的关系
接口的实现类:要么重写所有抽象方法 要么也是一个抽象类
成员变量: 只能是常量。默认会有public static final修饰
构造方法: 接口中没有构造方法,因为接口是对行为的抽象,所以不能有方法体。如果发现,其子类能够写构造方法,其实是抽象类继承Object导致的结果。
成员方法: 只能是抽象方法。默认修饰符 public abstract
注意:关于接口中的方法,jdk8和jdk9中有一些不同。
示例如下:
package day23;
//定义父接口看是否能继承
public class FuInterface {
}
package day23;
//定义父类,查看接口是否能继承
public class FuClass {
}
package day23;
//接口不能直接继承类,和接口
//接口不能实现类或者接口
public interface Jumping {
public static String Name = "xx";//注意其实省略了final
public static final int age = 18;
//测试构造方法。发现会报错,其实是不能有方法体的
//public Jumping(){};
public abstract void jump();
//接口中也可以写非抽象方法?其实并不是,其实也是抽象方法,因为省略了abstract
public void show();
}
package day23;
//后面注意实现接口的命名,统一为接口名+Impl
public class Cat extends Object implements Jumping {
//会发现这里可以使用构造方法,其实是继承与Object导致。而不是Jumping
public Cat(){
}
@Override
public void jump() {
System.out.println(Jumping.Name);//可以通过接口访问常量
System.out.println("猫跳高");
}
@Override
public void show() {
System.out.println("非抽象方法也要重写");
}
}
package day23;
//如果类是抽象类,可以不重写接口的方法。但是其子类也必须重写
public abstract class Dog implements Jumping{
}
package day23;
public class Test {
public static void main(String[] args) {
//直接实现接口
Jumping c = new Cat();
c.jump();
c.show();
//也可以再实现中通过接口名实现
System.out.println(Jumping.age);
//通过再继承实现接口
Jumping d = new Dog() {
@Override
public void jump() {
System.out.println("重写jump");
}
@Override
public void show() {
System.out.println("重写show");
}
};
d.jump();
d.show();
}
}
本文介绍了Java中接口的概念,包括如何定义接口、类如何实现接口以及接口的多态使用。强调接口作为行为的抽象,不能包含构造方法和具体实现,但可以有常量。在Java中,接口的实现类必须重写所有抽象方法,除非自身也是一个抽象类。通过示例展示了类如何通过implements关键字实现接口,并通过多态调用接口方法。

被折叠的 条评论
为什么被折叠?



