java接口简介

举报
陶然同学 发表于 2022/06/24 00:11:32 2022/06/24
【摘要】 1.1接口简介 接口,在java中是一种引用数据类型,里面主要有常量、抽象方法(jdk及以前)、默认方法和静态方法(jdk8)、和私有方法(jdk9)。接口是一系列方法的声明,是一些方法的特征集合,一个接口只要方法的特征而没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现类的方法具有不同的功能。 1.2接口的格式...

1.1接口简介

接口,在java中是一种引用数据类型,里面主要有常量、抽象方法(jdk及以前)、默认方法和静态方法(jdk8)、和私有方法(jdk9)。接口是一系列方法的声明,是一些方法的特征集合,一个接口只要方法的特征而没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现类的方法具有不同的功能。

1.2接口的格式


  
  1. public interface 接口名称{
  2. //常量
  3. //抽象方法
  4. //静态方法
  5. //默认方法
  6. //私有方法
  7. }

使用interface来声明一个接口。
里面包含常量、抽象方法、静态方法、默认方法、私有方法,最主要的还是里面的抽象方法。
需要一个实现类来实现接口当中的所有抽象方法。

抽象方法

抽象方法定义格式:


  
  1. public interface 接口名称{
  2. public abstract void 抽象方法名称();
  3. }

抽象方法使用abstract修饰,public abstract 可以省略,两个一起省略或者省略其中一个都是可以的(前期学习的时候建议不要省略),抽象方法没有方法体,

默认方法

默认方法定义格式:


  
  1. public interface 接口名称{
  2. public default void 默认方法名称(){
  3. //方法体
  4. }
  5. }

默认方法使用default关键字修饰,public可以省略不写,但default不能省略,默认方法主要给实现类(子类)覆盖重写或者调用。

静态方法


  
  1. public interface 接口名称{
  2. public static void 静态方法名称(){
  3. //方法体
  4. }
  5. }

静态方法使用static关键字修饰,public可以省略不写,静态方法只能接口来进行调用,不能通过实现类对象来调用,也不能被实现类所继承或者重写,静态方法只跟接口有关。

私有方法


  
  1. public interface 接口名称{
  2. private void 私有方法名称(){
  3. //方法体
  4. }
  5. private static 私有方法名称(){
  6. //方法体
  7. }
  8. }

私有方法分为:普通私有方法、静态私有方法。
私有方法使用private关键字修饰,供默认方法和静态方法使用。

1.3接口的实现

实现的概述

类与接口关系称为实现,即类实现接口,该类可以称为该接口的实现类,实现的动作与继承相仿,但实现类使用implements关键字,
实现类必须:
             1.实现接口当中的所有抽象方法【必须】
             2.继承或者重写接口当中的默认方法【可选】

实现类的格式:


  
  1. public class 类名 implements 接口名称{
  2. //方法体
  3. }

抽象方法的使用

定义测试类:


  
  1. 接口:
  2. public interface LiveAble{
  3. //定义抽象方法
  4. public abstract void eat();
  5. puclic abstract void sleep();
  6. }
  7. 实现类:
  8. public calss Animal implements LiveAble{
  9. @Override
  10. public void eat(){
  11. System.out.println("吃东西");
  12. }
  13. @Override
  14. public void sleep(){
  15. System.out.println("睡觉");
  16. }
  17. }
  18. 测试类:
  19. public class InterfaceDemo{
  20. public static void main(String[] args){
  21. //创建子类对象
  22. Animal a = new Animal();
  23. //调用实现后的方法
  24. a.eat();
  25. a.sleep();
  26. }
  27. }

实现类必须实现抽象类当中的所有抽象方法,如果没有实现接口当中的抽象方法,那么实现类就必须是一个抽象类,应为抽象方法所在的类必须是一个抽象类,

默认方法

定义测试类:
继承默认方法 代码如下:


  
  1. 接口:
  2. public interface LiveAble {
  3. public default void fly(){
  4. System.out.println("天上飞");
  5. }
  6. }
  7. 实现类:
  8. public class Animal implements LiveAble {
  9. // 继承,什么都不用写,直接调用
  10. }
  11. 测试类:
  12. public class InterfaceDemo {
  13. public static void main(String[] args) {
  14. // 创建子类对象
  15. Animal a = new Animal();
  16. // 调用默认方法
  17. a.fly();
  18. }
  19. }

覆盖重写默认方法 代码如下:


  
  1. 接口:
  2. public interface LiveAble {
  3. public default void fly(){
  4. System.out.println("天上飞");
  5. }
  6. }
  7. 实现类:
  8. public class Animal implements LiveAble {
  9. @Override
  10. public void fly() {
  11. System.out.println("自由自在的飞");
  12. }
  13. }
  14. 测试类:
  15. public class InterfaceDemo {
  16. public static void main(String[] args) {
  17. // 创建子类对象
  18. Animal a = new Animal();
  19. // 调用重写方法 a.fly();
  20. }
  21. }
  22. 输出结果: 自由自在的飞

默认方法可以被实现类继承也可以被覆该重写。

静态方法

静态与.class 文件相关,只能使用接口名调用,不可以通过实现类的类名或者实现类的对象调用,代码如下:

   
  1. 接口:
  2. public interface LiveAble {
  3. public static void run(){
  4. System.out.println("跑起来~~~");
  5. }
  6. }
  7. 实现类:
  8. public class Animal implements LiveAble {
  9. // 无法重写静态方法
  10. }
  11. 测试类:
  12. public class InterfaceDemo {
  13. public static void main(String[] args) {
  14. // Animal.run();
  15. // 【错误】无法继承方法,也无法调用
  16. LiveAble.run(); //
  17. }
  18. }输出结果: 跑起来~~~

私有方法
 

私有方法:只有默认方法可以调用。
私有静态方法:默认方法和静态方法可以调用。
如果一个接口中有多个默认方法,并且方法中有重复的内容,那么可以抽取出来,封装到私有方法中,供默认方法
去调用。从设计的角度讲,私有的方法是对默认方法和静态方法的辅助。同学们在已学技术的基础上,可以自行测
试。代码如下:

    
  1. 接口:
  2. public interface LiveAble {
  3. default void func(){
  4. func1();
  5. func2();
  6. }
  7. private void func1(){
  8. System.out.println("跑起来~~~");
  9. }
  10. private void func2(){
  11. System.out.println("跑起来~~~");
  12. }
  13. }

文章来源: blog.csdn.net,作者:陶然同学,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_45481821/article/details/106589801

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。