目标:

  • 如何创建已定义好的接口类型的对象呢?

步骤:

  • 实现的概述

  • 抽象方法的使用

  • 默认方法的使用

  • 静态方法的使用

  • 接口的常量使用

讲解:

实现的概述

类与接口的关系为实现关系,即类实现接口,该类可以称为接口的实现类,也可以称为接口的子类。实现的动作类似继承,格式相仿,只是关键字不同,实现使用 implements关键字。

非抽象子类实现接口:

  1. 必须重写接口中所有抽象方法。

  2. 继承了接口的默认方法,即可以直接调用,也可以重写。

实现格式:

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();
  }
}
输出结果:
吃东西
晚上睡

默认方法的使用

可以继承,可以重写,二选一,但是只能通过实现类的对象来调用。

  1. 继承默认方法,代码如下:

定义接口:

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();
  }
}
输出结果:
天上飞
  1. 重写默认方法,代码如下:

定义接口:

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关键字,并且一个普通类实现接口,必须要重写接口中的所有的抽象方法

最新文章

  1. angularjs 新窗口打开
  2. hibernate模糊查询
  3. jquery.validate ajax提交
  4. DataGridView隐藏列用CSS实现
  5. JPA学习(2)注解
  6. 使用rsync 的 --delete参数删除目标目录比源目录多余的文件
  7. Volley HTTP库系列教程(3)自定义RequestQueue和编写单例RequestQueue示例
  8. Reactor模式,或者叫反应器模式
  9. POJ 3436 ACM Computer Factory (拆点+输出解)
  10. Java 继承详解
  11. iOS里面消除使用代理调用方法时间警告问题
  12. C++之智能指针
  13. HDU 1934 树状数组 也可以用线段树
  14. Array.from();Object.keys();Array.map()
  15. Git笔记整理
  16. 微信小程序计算金额长度异常解决办法
  17. Android手机不插USB,使用adb网络远程调试
  18. mfc editline 变为大框框
  19. C. Connect Three(构造)
  20. JSON数据生成树——(四)

热门文章

  1. -bash: ./1.sh: /bin/bash^M: bad interpreter: No such file or directory
  2. 列表生成式 生成器 迭代器 yield
  3. Python 内存管理与垃圾回收
  4. oauth2.0密码模式详解
  5. 实现同比、环比计算的N种姿势
  6. 六、Java方法
  7. 使用 Fiddler 进行 iOS 抓包
  8. LGP3449题解
  9. git同步代码到另一分支
  10. python链接mqtt订阅与发布