jdk_8接口的内部内容
2024-09-07 17:57:01
目标:
如何创建已定义好的接口类型的对象呢?
步骤:
实现的概述
抽象方法的使用
默认方法的使用
静态方法的使用
- 接口的常量使用
讲解:
实现的概述
类与接口的关系为实现关系,即类实现接口,该类可以称为接口的实现类,也可以称为接口的子类。实现的动作类似继承,格式相仿,只是关键字不同,实现使用 implements
关键字。
非抽象子类实现接口:
必须重写接口中所有抽象方法。
继承了接口的默认方法,即可以直接调用,也可以重写。
实现格式:
class 类名 implements 接口名 {
// 重写接口中抽象方法【必须】
// 重写接口中默认方法【可选】
}
抽象方法的使用
必须全部实现,代码如下:
定义接口:
public interface LiveAble {
// 定义抽象方法
public abstract void eat();
public abstract void sleep();
}
定义实现类:
public class Animal implements LiveAble {
@Override
public void eat() {
System.out.println("吃东西");
}
@Override
public void sleep() {
System.out.println("晚上睡");
}
}
定义测试类:
public class InterfaceDemo {
public static void main(String[] args) {
// 创建子类对象
Animal a = new Animal();
// 调用实现后的方法
a.eat();
a.sleep();
}
}
输出结果:
吃东西
晚上睡
默认方法的使用
可以继承,可以重写,二选一,但是只能通过实现类的对象来调用。
继承默认方法,代码如下:
定义接口:
public interface LiveAble {
public default void fly(){
System.out.println("天上飞");
}
}
定义实现类:
public class Animal implements LiveAble {
// 继承,什么都不用写,直接调用
}
定义测试类:
public class InterfaceDemo {
public static void main(String[] args) {
// 创建子类对象
Animal a = new Animal();
// 调用默认方法
a.fly();
}
}
输出结果:
天上飞
重写默认方法,代码如下:
定义接口:
public interface LiveAble {
public default void fly(){
System.out.println("天上飞");
}
}
定义实现类:
public class Animal implements LiveAble {
@Override
public void fly() {
System.out.println("自由自在的飞");
}
}
定义测试类:
public class InterfaceDemo {
public static void main(String[] args) {
// 创建子类对象
Animal a = new Animal();
// 调用重写方法
a.fly();
}
}
输出结果:
自由自在的飞
静态方法的使用
静态与.class 文件相关,只能使用接口名调用,不可以通过实现类的类名或者实现类的对象调用,代码如下:
定义接口:
public interface LiveAble {
public static void run(){
System.out.println("跑起来~~~");
}
}
定义实现类:
public class Animal implements LiveAble {
// 无法重写静态方法
}
定义测试类:
public class InterfaceDemo {
public static void main(String[] args) {
// Animal.run(); // 【错误】无法继承方法,也无法调用
LiveAble.run(); //
}
}
输出结果:
跑起来~~~
常量的使用
public interface LiveAble {
//常量 ,必须赋值,一旦赋值,就不能修改
public static final String MY_NAME = "wzw";
//同以上效果一致
int AGE = 18;
}
定义实现类:
public class Animal implements LiveAble {
// 无法重写静态常量
}
定义测试类:
public class InterfaceDemo {
public static void main(String[] args) {
// Animal.MY_NAME; // 【错误】无法继承方法,也无法调用
System.out.println(LiveAble.MY_NAME); // 接口名直接调用
System.out.println(LiveAble.AGE); // 接口名直接调用
}
}
输出结果:
wzw
18
小结: 类实现接口使用的是implements关键字,并且一个普通类实现接口,必须要重写接口中的所有的抽象方法
最新文章
- angularjs 新窗口打开
- hibernate模糊查询
- jquery.validate ajax提交
- DataGridView隐藏列用CSS实现
- JPA学习(2)注解
- 使用rsync 的 --delete参数删除目标目录比源目录多余的文件
- Volley HTTP库系列教程(3)自定义RequestQueue和编写单例RequestQueue示例
- Reactor模式,或者叫反应器模式
- POJ 3436 ACM Computer Factory (拆点+输出解)
- Java 继承详解
- iOS里面消除使用代理调用方法时间警告问题
- C++之智能指针
- HDU 1934 树状数组 也可以用线段树
- Array.from();Object.keys();Array.map()
- Git笔记整理
- 微信小程序计算金额长度异常解决办法
- Android手机不插USB,使用adb网络远程调试
- mfc editline 变为大框框
- C. Connect Three(构造)
- JSON数据生成树——(四)