java9开始——接口中可以定义private私有方法_java

来源:脚本之家  责任编辑:小易  

java9已经发布了很久2113了,主要的新特性有:5261JShell:交互式 Java REPL私有接口方法Java 9 模块系统4102改进的 JavadocHTTP/2客户端新版字符串多版本1653兼容 JAR改进的 Stream API更多详细的信息你可以到官网查看www.zgxue.com防采集请勿采集本网。

在传统的Java编程中,被广为人知的一个知识点是:java Interface接口中不能定义private私有方法。只允许我们定义public访问权限的方法、抽象方法或静态方法。但是从Java 9 开始,Interface 接口中允许定义私有方法和私有静态方法。下面我们就来为大家介绍其语法规则,和为什么要有这样的设计。

AnjoyoJava9课后习题1、选择题:1.下列说法中错误的一项是(A)。A、线程就是程序B、线程是一个程序的单个执行流C、多线程是指一个程序的多个执行流D、多线程用于实现并发2.下列哪个一个操作不能使线程从等待阻塞状态进入对象阻塞状态(A)。A、

其实在Java 8之前,还有另一个被广为人之的知识点:接口中所有的方法必须是abstract 抽象方法。但是,从java 8开始接口中可以包含非abstract 方法,如下文中的default方法。这个不是我们本文要为大家介绍的内容,如不熟悉,请自行补课。

创建一个tu类型的数组,数组初始容量为9,名字为tu;不建议将名字设置成与类名相同,类名首字母最好大写,java编码规范

一、Java 9接口定义私有方法

[_-a-zA-Z0-9]+ 我的比楼上的简单,并且楼上的回答有个bug。楼上的正则表达式还能匹配空字符串。 改成([A-Z]|[a-z]|[0-9]|-|_){1,}就好

从Java 9开始,我们可以在Interface接口中添加private的私有方法和私有静态方法。这些私有方法将改善接口内部的代码可重用性。例如,如果需要两个默认方法来共享代码,则私有接口方法将允许它们共享代码,但不将该私有方法暴露给它的实现类调用(后文中会给大家举一个例子)。

把文件名 Main.java 改为 Test.java ,然后再编译运行。

在接口中使用私有方法有四个规则: 接口中private方法不能是abstract抽象方法。因为abstract抽象方法是公开的用于给接口实现类实现的方法,所以不能是private。 接口中私有方法只能在接口内部的方法里面被调用。 接口中私有静态方法可以在其他静态和非静态接口方法中使用。 接口中私有非静态方法不能在私有静态方法内部使用。

使用JDK1.8新的日期时间类,有效地简化你的日期时间计算。 final class LocalTimeDemo { public static void main(Stringargs) { LocalTime time0 = LocalTime.of(9,15), time1 = LocalTime.of(10,35); System.out.println(time0.until(time1

interface CustomInterface { public abstract void abstractMethod(); //抽象方法不能是私有的 public default void defaultMethod() { privateMethod(); //可以调用接口中的私有方法 privateStaticMethod(); //可以调用接口中的私有静态方法 System.out.println("普通方法被调用"); } public static void staticMethod() { privateStaticMethod(); //public静态方法可以调用private静态方法 System.out.println("静态方法被调用"); } private void privateMethod() { System.out.println("private私有方法被调用"); } private static void privateStaticMethod() { System.out.println("private私有静态方法被调用"); }}

按照上面四个规则,上面的代码定义都是正确的

二、一个例子:分别计算奇数与偶数的和

接口定义如下,下文中add方法采用了java8 的Stream流操作,分别使用lambda表达式作为过滤条件,并求和。核心是:addEvenNumbers偶数求和函数和addOddNumbers奇数求和函数,都调用了add接口私有方法。

public interface CustomCalculator { default int addEvenNumbers(int... nums) { //非抽象,java8 开始可以定义default方法 return add(n -> n % 2 == 0, nums); //过滤偶数并求和,调用private私有方法 } default int addOddNumbers(int... nums) { //非抽象,java8 开始可以定义default方法 return add(n -> n % 2 != 0, nums); //过滤奇数并求和,调用private私有方法 } //按照过滤条件过滤奇数或偶数并sum求和:java9开始可以定义private私有方法 private int add(IntPredicate predicate, int... nums) { return IntStream.of(nums) //java8 Stream流 .filter(predicate) //java8 predicate及过滤器 .sum(); //sum求和 }}

接口实现类MainCalculator 实现CustomCalculator接口

public class MainCalculator implements CustomCalculator { public static void main(String[] args) { CustomCalculator demo = new MainCalculator (); int sumOfEvens = demo.addEvenNumbers(1,2,3,4,5,6,7,8,9); System.out.println(sumOfEvens); //过滤所有偶数并求和,结果是20 int sumOfOdds = demo.addOddNumbers(1,2,3,4,5,6,7,8,9); System.out.println(sumOfOdds); //过滤所有奇数并求和,结果是25 } }

作者链接:字母哥博客

以上就是java9开始 接口中可以定义private私有方法的详细内容,更多关于Java定义private私有方法的资料请关注真格学网其它相关文章! 您可能感兴趣的文章:java接口私有方法实现过程解析利用java反射机制调用类的私有方法(推荐)java private关键字用法实例Java的外部类为什么不能使用private和protected进行修饰的讲解Java中的private、protected、public和default的区别(详解)Java9垃圾回收方法finalize() 原理解析Java9以后的垃圾回收的具体用法java9学习笔记之模块化详解

以下:T为正确2113,F为错误! 1. (T)一个5261Applet编译后的类名是Test.class,运行4102此小程序的命令是Java Test 2. (T)接口中的所1653有方法都没有被实现 3. (F)定义完数组后,我们可以根据实际需要,再动态调整数组大小 4. (T) 实现一个接口,则在类中一定要实现接口中的所有方法。 5. (T) 类体中private修饰的变量在本类中能访问,类生成的对象也能访问。 6. (F)数组、类和接口都是引用数据类型 7. (F)int x=9; if(x>8 and x<10) System.out.println("true"); 以上语句运行的结果是显示true 8. (F)String str; System.out.println(str.length()); 以上语句运行的结果是显示0 9. (T)float x=26f; int y=26; int z=x/y; 以上语句能正常编译和运行 10. (T) if("Hunan".indexOf('n')==2) System.out.println("true"); 以上语句运行的结果是显示true 11. (F) 程序中抛出异常时(throw …),只能抛出自己定义的异常对象。 12. (T) int[] a={1,2,3,4}; System.out.println(a.length()); 以上语句运行的结果是显示4 13. (T) 一个异常处理中 finally语句块只能有一个或者可以没有。 14. (T)抽象类不能实例化 15. (T)在Swing用户界面的程序设计中,容器可以被添加到其它容器中去 16. (F) 一个方法最多能有一个return语句 17. (T)在Java程序中,通过类的定义只能实现单重继承 18. (T)类A和类B位于同一个包中,则除了私有成员,类A可以访问类B的所有其他成员 19. (F)一个类中,只能拥有一个构造器方法 20. (T)用Javac编译Java源文件后得到代码叫字节码。 你都要给我100分了我还能不给你拿100分?呵呵才子_辉祝您愉快!本回答被提问者采纳,1. (T)一个Applet编译后2113的类名是Test.class,运行此小程序的命令是5261Java Test 2. (T)接口中的所有方法都没4102有被实现1653 3. (F)定义完数组后,我们可以根据实际需要,再动态调整数组大小 4. (T) 实现一个接口,则在类中一定要实现接口中的所有方法。 5. (T) 类体中private修饰的变量在本类中能访问,类生成的对象也能访问。 6. (F)数组、类和接口都是引用数据类型 7. (F)int x=9; if(x>8 and x<10) System.out.println("true"); 以上语句运行的结果是显示true 8. (F)String str; System.out.println(str.length()); 以上语句运行的结果是显示0 9. (T)float x=26f; int y=26; int z=x/y; 以上语句能正常编译和运行 10. (T) if("Hunan".indexOf('n')==2) System.out.println("true"); 以上语句运行的结果是显示true 11. (F) 程序中抛出异常时(throw …),只能抛出自己定义的异常对象。 12. (T) int[] a={1,2,3,4}; System.out.println(a.length()); 以上语句运行的结果是显示4 13. (T) 一个异常处理中 finally语句块只能有一个或者可以没有。 14. (T)抽象类不能实例化 15. (T)在Swing用户界面的程序设计中,容器可以被添加到其它容器中去 16. (F) 一个方法最多能有一个return语句 17. (T)在Java程序中,通过类的定义只能实现单重继承 18. (T)类A和类B位于同一个包中,则除了私有成员,类A可以访问类B的所有其他成员 19. (F)一个类中,只能拥有一个构造器方法 20. (T)用Javac编译Java源文件后得到代码叫字节码,1、错2、对52613、错4、对41025、错16536、对7、错8、错9、错10、对11、错12、对13、对14、对15、对16、错17、对18、对19、错20、对做得很快,没有去验证答案,虽不能保证100%对,但应付考试和作业没问题了。针对下面大家的回复,解释一下:第1题明显错误。Applet中没有main函数,所以java Test是绝对不行的。要运行Applet有两个办法,一是把Applet嵌入到html中,用IE运行,二是用jdk自带的appletviewer.exe来执行。java.exe是执行不了的。第18题是对的。如果类A和类B在同一个包中,那么类A是可以访问类B中的protected成员的。其他的答案我没有跟楼下(本来我是第一个,修改答案以后成最后一个了,所以这里应该是“楼上”)的比较。但是通过这两个题,我建议楼主以我的答案为准,楼主,你好,你要2113的结果是不是这个,5261写好了注解,请楼主验收:4102 1. (错)一个Applet编译后的类名是1653Test.class,运行此小程序的命令是Java Test //用application运行或用appletviewer.exe 2. (对)接口中的所有方法都没有被实现 //JAVA语法规定 3. (错)定义完数组后,我们可以根据实际需要,再动态调整数组大小 //JAVA语法规定 4. (对) 实现一个接口,则在类中一定要实现接口中的所有方法。//JAVA语法规定 5. (错) 类体中private修饰的变量在本类中能访问,类生成的对象也能访问。//JAVA语法规定 6. (对)数组、类和接口都是引用数据类型 //引用型就是C的指针 7. (错)int x=9; if(x>8 and x<10) System.out.println("true"); 以上语句运行的结果是显示true //编译错误if里面不能有and 8. (错)String str; System.out.println(str.length()); 以上语句运行的结果是显示0 //编译错误,必须先初始化str 9. (错)float x=26f; int y=26; int z=x/y; 以上语句能正常编译和运行 //编译错误,损失精度。 10. (对) if("Hunan".indexOf('n')==2) System.out.println("true"); 以上语句运行的结果是显示true //对 11. (错) 程序中抛出异常时(throw …),只能抛出自己定义的异常对象。//可以抛API自带的异常对象 12. (错) int[] a={1,2,3,4}; System.out.println(a.length()); 以上语句运行的结果是显示4//编译错误,数组没有length()方法只有length属性,不加括号 13. (对) 一个异常处理中 finally语句块只能有一个或者可以没有。 //JAVA语法规定 14. (对)抽象类不能实例化 //JAVA语法规定 15. (对)在Swing用户界面的程序设计中,容器可以被添加到其它容器中去 //JAVA语法规定 16. (错) 一个方法最多能有一个return语句 //题目有歧义,只能说一个方法只能用return返回一个对象。 17. (对)在Java程序中,通过类的定义只能实现单重继承 //JAVA语法规定 18. (对)类A和类B位于同一个包中,则除了私有成员,类A可以访问类B的所有其他成员 //JAVA语法规定 19. (错)一个类中,只能拥有一个构造器方法 //可以重载构造方法 20. (对)用Javac编译Java源文件后得到代码叫字节码。//JAVA规定 祝楼主在JAVA学习上一帆风顺~~~,四楼的答案应该全是对的,其他的我没有看!内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • 基于tcp通信丢包原因总结(推荐)
  • 使用spring组合自定义的注释 mscharhag操作
  • java.lang.nullpointerexception出现的几种原因及解决方案
  • io 使用说明介绍
  • spring mvc利用swagger2如何构建动态restful api详解
  • 多个springboot项目采用redis实现session共享功能
  • 详解java中的vector
  • 通过class类获取对象(实例讲解)
  • java8 completablefuture详解
  • spring cloud eureka ribbon 服务注册发现与调用
  • JAVA判断题 急!!!!!!!
  • Java9最新特性有哪些
  • 9) Java中类、抽象类、接口之间的区别和联系。
  • java 自定义正则表达式:限制字符串只能匹配A-Z、a...
  • AnjoyoJava9课后习题
  • private tu tu[]=new tu[9]; 这句话在java中是什么...
  • java 自定义正则表达式:限制字符串只能匹配A-Z、a...
  • 萢萢,想问一下这个问题怎么解决?Error:(2, 9) ja...
  • java一个开始时间,一个结束时间,怎么把中间的时间...
  • java 中 9>>>3是什么意思
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全c#教程vbvb.netc 语言java编程delphijavaandroidiosswiftscala易语言汇编语言其它相关首页java接口私有方法实现过程解析利用java反射机制调用类的私有方法(推荐)java private关键字用法实例java的外部类为什么不能使用private和protected进行修饰的讲解java中的private、protected、public和default的区别(详解)java9垃圾回收方法finalize() 原理解析java9以后的垃圾回收的具体用法java9学习笔记之模块化详解基于tcp通信丢包原因总结(推荐)使用spring组合自定义的注释 mscharhag操作java.lang.nullpointerexception出现的几种原因及解决方案io 使用说明介绍spring mvc利用swagger2如何构建动态restful api详解多个springboot项目采用redis实现session共享功能详解java中的vector通过class类获取对象(实例讲解)java8 completablefuture详解spring cloud eureka ribbon 服务注册发现与调用java使double保留两位小数的多方java8 十大新特性详解intellij idea 2020最新激活码(亲java.net.socketexception: connjava写入文件的几种方法分享java环境变量的设置方法(图文教程java 十六进制与字符串的转换java list用法示例详解java中file类的使用方法javaweb实现文件上传下载功能实例java比较器comparator使用示例分享java中的位运算符、移位运算详细介绍java中文分词之正向最大匹配法实例代码spring boot tomcat jdbc pool的属性绑定windows下java调用可执行文件代码实例springboot+websocket实现一个简单的网页java中listiterator和iterator详解与辨析mybatis实战之typehandler高级进阶浅谈java中向上造型向下造型和接口回调中java callable与future的详解及实例
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved