Java 9 Private Interface Methods

简介: Java 9 Private Interface Methods

在 Java 9 中,我们可以在接口内创建私有方法。接口允许我们声明有助于在非抽象方法之间共享公共代码的私有方法。

在 Java 9 之前,在接口内创建私有方法会导致编译时错误。以下示例使用 Java 8 编译器进行编译,并引发编译时错误。

interface Sayable{

default void say() {  
    saySomething();  
}  
// Private method inside interface  
private void saySomething() {  
    System.out.println("Hello... I'm private method");  
}

}

public class PrivateInterface implements Sayable {

public static void main(String[] args) {  
    Sayable s = new PrivateInterface();  
    s.say();  
}

}

输出:

PrivateInterface.java:6: error: modifier private not allowed here

注意:要实现私有接口方法,请仅使用 Java 9 或更高版本编译源代码。

现在,让我们使用 Java 9 执行以下代码。查看输出,它执行得很好。

interface Sayable{

default void say() {  
    saySomething();  
}  
// Private method inside interface  
private void saySomething() {  
    System.out.println("Hello... I'm private method");  
}

}

public class PrivateInterface implements Sayable {

public static void main(String[] args) {  
    Sayable s = new PrivateInterface();  
    s.say();  
}

}

输出:

Hello... I'm private method

例如,我们也可以在接口内创建私有静态方法。请看下面的例子。

interface Sayable{

default void say() {  
    saySomething(); // Calling private method  
    sayPolitely(); //  Calling private static method  
}  
// Private method inside interface  
private void saySomething() {  
    System.out.println("Hello... I'm private method");  
}  
// Private static method inside interface  
private static void sayPolitely() {  
    System.out.println("I'm private static method");  
}

}

public class PrivateInterface implements Sayable {

public static void main(String[] args) {  
    Sayable s = new PrivateInterface();  
    s.say();  
}

}

输出:

Hello... I'm private method

I'm private static method

相关文章
|
7月前
|
Java
Java(二十一)interface接口
Java(二十一)interface接口
55 0
|
7月前
|
Java 数据安全/隐私保护
java中public、private、protected作用范围
该内容是关于Java中访问修饰符的范围总结:`public`(全局访问)、`protected`(同包及子类访问)、默认(同包访问)、`private`(仅本类访问)。
81 6
|
4月前
|
设计模式 Oracle Java
一不小心掉入了 Java Interface 的陷阱
本文作者记录了一次代码中的踩坑经历,一行很简单的代码在不同的场景下可能也暗藏玄机,希望大家看完都有所收获。
|
4月前
|
Java Android开发
解决Android编译报错:Unable to make field private final java.lang.String java.io.File.path accessible
解决Android编译报错:Unable to make field private final java.lang.String java.io.File.path accessible
504 1
|
7月前
|
Java
Java语言接口(Interface)的深入解析
Java语言接口(Interface)的深入解析
|
7月前
|
Java
Java 接口(Interface)
Java接口是抽象类型,定义方法规范而无实现。接口通过`interface`关键字定义,包含方法签名和常量。类可实现多个接口,实现接口必须覆盖所有方法。接口常用于多态、回调和模块化。一个类可继承一个抽象类并实现多个接口。接口中的常量默认为`public static final`。注意接口不能实例化,且多个接口同名方法可通过实现类重写避免冲突。接口继承多个接口时,规范冲突则不允许。
65 0
|
7月前
|
Java 编译器
【JAVA学习之路 | 提高篇】接口(interface)
【JAVA学习之路 | 提高篇】接口(interface)
|
Java
JAVA 抽象类(Abstract Class) 和 接口(Interface) 的区别
对于面向对象编程来说,抽象是它的一大特征之一。在 Java 中,可以通过两种形式来体现 OOP 的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。今天我们就一起来学习一下Java中的接口和抽象类抽象类不能用于实例化对象,抽象类往往用来表示抽象概念。举个例子,中国人(Chinese 类)和美国人(American 类)都有“吃饭”这个行为,因此可以先定义一个 Person 类,然后让 Chinese 和 American 都继承这个类。但如何在父类 Person 中定义“吃饭”这个方法呢?一般
133 0
|
7月前
|
Java
java-基础-Interface、abstract类、Static class 、non static class的区别
【4月更文挑战第5天】Java中的接口、抽象类、静态类和非静态类各具特色:接口仅含抽象方法和常量,用于定义行为规范;抽象类可包含抽象和非抽象方法,提供部分实现,支持多继承;静态内部类不依赖外部类实例,可独立存在,访问外部类的静态成员;非静态内部类持有关联外部类引用,能访问其所有成员。这些机制根据设计需求和场景选择使用。
51 6
|
7月前
|
人工智能 Java API
【Java 接口】接口(Interface)的定义,implements关键字,接口实现方法案例
【Java 接口】接口(Interface)的定义,implements关键字,接口实现方法案例
106 0
下一篇
无影云桌面