java面向对象程序设计(下)-接口的定义
抽象类是从多个类中抽象出来的模板,如果将这种抽象进行得更加彻底,则可以提炼出一种更加特殊的"抽象类"-接口(interface),Java9对接口进行了改进,允许在接口中定义默认方法和类方法,默认方法和类方法都可以提供方法实现,Java9为接口增加了一种私有方法,私有方法也可提供方法实现
接口是从多个相似类中抽象出来的规范,接口不提供任何实现,接口体现的是规范和实现分离的设计哲学.
接口定义的是多个类共同的公共行为规范,这些行为是与外部交流的通道,这就意味着接口里通常是定义一组公用方法.
接口的基本语法,使用关键字interface
[修饰符] interface 接口名 extends 父接口1,父接口2,...
{
零个到多个常量定义...
零个到多个抽象方法...
零个到多个内部类,接口,枚举...
零个到多个私有方法,默认方法或者类方法定义...
}
语法详细定义:
1.修饰符可以是public或者省略,如果省略了public访问控制符,则默认采用包权限访问控制符,也就是只有在相同包结构下才可以访问该接口
2.接口名应与类名采用相同的命名规则,即如果仅从语法角度看,接口名只要符合标识符规则即可;如果从Java可读性来说,则接口名应由多个有意义的单词连缀而成,单词首字母大写.
3.一个接口可以有多个直接父接口,但接口只能继承接口,不能继承类.
只有在Java8及以上版本中才允许在接口中定义默认方法,类方法,关于内部类,内部接口,内部枚举,稍后介绍.
接口定义的是一种规范,因此,接口里面不能包含构造器和初始化块.
接口内部的成员:
1.成员变量(只能是静态常量,默认使用修饰符 public static final修饰,没有构造器和初始化块,故接口中定义的成员变量只能在定义时指定默认值)
2.方法(只能是抽象方法,类方法,默认方法,私有方法,除开这几种,普通方法一律加public abstract来修饰,普通方法不能有方法体,但类方法,默认方法,私有方法都必须有方法实现(方法体))
3.内部类(包括内部接口,枚举)定义
接口里的常量,方法,内部类,内部枚举都是public访问权限,可以省略,如果要加,则必须为public.
Java9为接口增加了一种新的私有方法,其实私有方法的主要作用就是作为工具方法,为接口总的默认方法或者类方法提供支持,私有方法拥有方法体,但不可以用default修饰,可以使用static修饰
代码示例:
package com.j1803.interfaceTest;
public interface OutputTest {
//接口里定义的成员变量只能是常量
int MAX_CACHE_LINE=89;
//接口里定义的普通方法只能是public的抽象方法
void out();
void getData(String msg);
//接口中定义默认方法,需要使用default修饰
default void print(String...msgs) {
for(String msg:msgs) {
System.out.println(msg);
}
}
default void print(String...msgs) {
for(String msg:msgs) {
System.out.println(msg);
}
}
//接口中定义的类方法,需要使用static修饰
static String staticTest() {
return "接口里的类方法";
}
/*//定义私有方法
private void footest() {
System.out.println("fooltest私有方法");
}
//定义私有静态方法
private static void foo() {
System.out.println("foo私有静态方法");*/
}
}
JDK9支持私有方法.默认方法只支持default,即public default void print(String...msgs),不支持static修饰,需要接口实现类实例来调用.
java面向对象程序设计(下)-接口的定义的更多相关文章
- java面向对象程序设计(下)-枚举类
在某些情况下,一个类的对象是有限而且固定的,比如季节类,它只有4个对象;再比如行星类,目前只有8个对象,这些实例有限而且固定的类,在Java中被称为枚举类 JDK1.5新增了一个enum关键字,(它与 ...
- Java面向对象作业-用接口方式测试向下转型
Java面向对象作业-用接口方式测试向下转型 根据视频的里实例 我们直接修改Test2测试方法: package com.java1234.chap03.sec13; public class Tes ...
- 实验二 Java面向对象程序设计
实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...
- 20145208 实验二 Java面向对象程序设计
20145208 实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步 ...
- 20145221 《Java程序设计》实验报告二:Java面向对象程序设计
20145221 <Java程序设计>实验报告二:Java面向对象程序设计 实验要求 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...
- Java实验报告二:Java面向对象程序设计
Java实验报告二:Java面向对象程序设计 ...
- 20162317袁逸灏 第八周实验报告:实验二 Java面向对象程序设计
20162317袁逸灏 第八周实验报告:实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 ...
- 2018-2019-2 20175217 实验二《Java面向对象程序设计》实验报告
一.实验报告封面 课程:Java程序设计 班级:1752班 姓名:吴一凡 学号:20175217 指导教师:娄嘉鹏 实验日期:2019年4月15日 实验时间:--- 实验序号:实验二 实验名称:Jav ...
- 20175221曾祥杰 实验二《Java面向对象程序设计》
实验二<Java面向对象程序设计> 实验报告封面 课程:Java程序设计 班级:1752班 姓名:曾祥杰 学号:20175221 指导教师:娄嘉鹏 实验日期:2019年4月17日 实验时间 ...
随机推荐
- 端到端TVM编译器(上)
端到端TVM编译器(上) 摘要 将机器学习引入到各种各样的硬件设备中.AI框架依赖于特定于供应商的算子库,针对窄范围的服务器级gpu进行优化.将工作负载部署到新平台,例如手机.嵌入式设备和加速器(例如 ...
- 第四代自动泊车从APA到AVP技术
第四代自动泊车从APA到AVP技术 前言 自动泊车是指汽车自动泊车入位不需要人工控制,系统能够自动帮你将车辆停入车位,在倒车入库中可谓是驾驶者的一项利器.当我们找到一个理想的停车地点,只需轻轻启动按钮 ...
- 自动调度GPU的卷积层
自动调度GPU的卷积层 这是有关如何对GPU使用自动调度程序的文档. 与依靠手动模板定义搜索空间的基于模板的autotvm不同,自动调度程序不需要任何模板.用户只需要编写计算声明,而无需任何调度命令或 ...
- python应用_读取Excel数据【二】_二次封装之函数式封装
目的:想要把对Excel文件读取做成一个通用的函数式封装,便于后续简单调用,隔离复杂性. 未二次封装前原代码: #coding=gbkimport osimport xlrdcurrent_path= ...
- Flink实时计算pv、uv的几种方法
本文首发于:Java大数据与数据仓库,Flink实时计算pv.uv的几种方法 实时统计pv.uv是再常见不过的大数据统计需求了,前面出过一篇SparkStreaming实时统计pv,uv的案例,这里用 ...
- Java 反射编程(上)
文章目录 反射的泛型就是用`? `来描述 反射与类的操作 (取得父类信息) 取得父类信息 1. 获得本类的包名称: 2. 取得父类的Class 对象 3. 取得父类接口 案例: 使用上述方法 反射与类 ...
- 剑指 Offer 04. 二维数组中的查找
链接:https://leetcode-cn.com/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/ 标签:数组.双指针.二分 题目 在一个 n * m ...
- 【NX二次开发】Block UI 曲线收集器
属性说明 属性 类型 描述 常规 BlockID String 控件ID Enable Logical 是否可操作 Group ...
- MySQL进阶:主主复制+Keepalived高可用
Blog:博客园 个人 概述 mysql主主复制 所谓主主复制,即双主备份,或者叫互作主从复制,每台master既是master,又是slave.这种方案,既做到了访问量的压力分流,同时也解决了单点故 ...
- 从菜鸟到大神:Java高并发核心编程(连载视频)
任何事情是有套路的,学习是如此, Java的学习,更是如此. 本文,为大家揭示 Java学习的套路 背景 Java高并发.分布式的中间件非常多,网上也有很多组件的源码视频.原理视频,汗牛塞屋了. 作为 ...