当前位置: 首页 > news >正文

Java基础:接口

1.接口的概念

 

当不是所有子类, 而是多个子类都包含一个方法时, 为了代码书写规范性, 可以用自定义的接口来统一该方法的书写规范. 所以接口可以看作是一种书写规则.

接口是对行为的抽象

抽象类一般是书写在父类当中, 接口是单独书写的, 不是一种类

2.接口的定义和使用

3.接口中成员的特点

4.接口和类的关系

当一个类实现多个接口, 并且多个接口中有重名的方法时, 只用实现一个接口中的同名方法.(也就是说每个方法只实现一次)

若类implements子接口, 那么就需要重写所有的抽象方法(包括父接口方法)

5.接口和抽象类的综合案例

package cn.ncepu.demo1.a02abstrctdemo2;public abstract class Person {private String name;private int age;public Person() {}public Person(String name, int age) {this.name = name;this.age = age;}public abstract void work();/*** 获取* @return name*/public String getName() {return name;}/*** 设置* @param name*/public void setName(String name) {this.name = name;}/*** 获取* @return age*/public int getAge() {return age;}/*** 设置* @param age*/public void setAge(int age) {this.age = age;}public String toString() {return "Person{name = " + name + ", age = " + age + "}";}
}package cn.ncepu.demo1.a02abstrctdemo2;public class PingPong extends Person implements Speak{public PingPong() {}public PingPong(String name, int age) {super(name, age);}@Overridepublic void work() {System.out.println("学打乒乓球");}@Overridepublic void speak() {System.out.println("说英语");}
}package cn.ncepu.demo1.a02abstrctdemo2;public class Basketball extends Person{public Basketball() {}public Basketball(String name, int age) {super(name, age);}@Overridepublic void work() {System.out.println("学打篮球");}
}package cn.ncepu.demo1.a02abstrctdemo2;public class PingPongCoach extends Person implements Speak{public PingPongCoach() {}public PingPongCoach(String name, int age) {super(name, age);}@Overridepublic void work() {System.out.println("教打乒乓球");}@Overridepublic void speak() {System.out.println("说英语");}
}package cn.ncepu.demo1.a02abstrctdemo2;public class BasketballCoach extends Person{public BasketballCoach() {}public BasketballCoach(String name, int age) {super(name, age);}@Overridepublic void work() {System.out.println("教打篮球");}
}package cn.ncepu.demo1.a02abstrctdemo2;public interface Speak {public abstract void speak();
}package cn.ncepu.demo1.a02abstrctdemo2;public class Test {public static void main(String[] args) {PingPong pingPong = new PingPong("乒乓球运动员", 18);Basketball basketball = new Basketball("篮球运动员", 20);PingPongCoach pingPongCoach = new PingPongCoach("乒乓球教练", 35);BasketballCoach basketballCoach = new BasketballCoach("篮球教练", 38);pingPong.work();basketball.work();pingPongCoach.work();basketballCoach.work();pingPongCoach.speak();pingPong.speak();}
}

6.接口中的新增方法

1.有方法体的方法接口

目的 : 为了在父类接口中添加新规则的同时又使已经实现的子类接口不报错

如果实现了多个接口,多个接口中存在相同名字的默认方法,子类就必须对该方法进行重写 : 意思是当一个类implements多个接口时, 这几个接口中存在相同名字的默认方法, 这时如果创建类的实例来引用方法就不知道去哪个接口中寻找, 所以必须在类中重写该默认方法.

2. 在接口中定义静态方法

接口中的static方法不能被重写.

通过接口名.方法名(); 来调用static静态方法.

3.在接口中定义私有方法

目的 : 当默认方法和静态方法中有相同功能的代码块时(重复书写的部分), 就通过私有方法用来提取出来写一个方法, 在默认方法和静态方法中直接调用就可以

不加static的私有方法是为默认方法服务的

加static的私有方法是为静态方法服务的

7.接口应用

8.适配器设计模式

当我们不想重写接口中的所有方法, 而只想创建类实现接口中的部分方法时, 我们可以创建一个适配器类用来空重写接口的所用方法, 然后继承适配器类, 重写需要用到的方法就可以了. (一般适配器是abstrct的, 不让外部创建对象)

http://www.lryc.cn/news/8714.html

相关文章:

  • vuex基础入门:uniapp实现用户登录授权实战
  • Windows系统从权限维持角度进行应急响应
  • 什么是DNS解析?如何提升DNS解析安全?
  • 电路学习笔记
  • C# 数据结构
  • powerjob的worker启动,研究完了这块代码之后我发现了,代码就是现实中我们码农的真实写照
  • 配置Qt Creator
  • C++-类和对象(下)
  • 什么是仓库管理?
  • 对话系统学习概述(仅够参考)
  • 免费CRM客户管理系统真的存在吗?不仅有,还有5个!
  • C#开发的OpenRA使用自定义字典的比较函数
  • DHCP协议
  • C语言进阶——自定义类型:枚举、联合
  • 背景透明(opacity vs background)
  • 华为OD机试 - 最小施肥机能效(Python)| 真题+思路+考点+代码+岗位
  • vue2 使用 cesium 篇
  • 2023预测:PKI将受到企业重点关注
  • linux基本功系列之grep命令
  • 硬件设计——DDR
  • 最近你提前还贷了吗
  • 关于STM32常用的8种GPIO输入输出模式的理解
  • vue - vue项目中解决 IOS + H5 滑动边界橡皮筋弹性效果
  • webpack(高级)--创建自己的loader 同步loader 异步loader loader参数校验
  • Assignment写作各个部分怎么衔接完美?
  • 医疗器械实验室设计规划全了SICOLAB
  • 2023年浙江建筑施工物料提升(建筑特种作业)模拟试题及答案
  • shell编程经典案例,建议收藏
  • C++通用容器
  • 字符串的特殊读取——基于蓝桥杯两道题目(C/C++)