- 接口组成更新概述
- 接口中默认方法
- 接口中静态方法
- 接口中私有方法
接口组成更新概述
接口的组成
- 常量
public static final - 抽象方法
public abstract - 默认方法(Java8)
- 静态方法(Java8)
- 私有方法(Java9)
接口中默认方法
package Java;
/*
需求:
1.定义一个接口MyInterface,里面有两个抽象方法:
void show1();
void show2();
2.定义接口的两个实现类:
MyInterfaceImplOne
MyInterfaceImplTwo
3.定义测试类:
MyInterfaceDemo
在主方法中,按照多态的方式创建对象并使用
*/
public class MyInterfaceDemo {
public static void main(String[] args){
MyInterface my=new MyInterfaceImplOne();
my.show1();
my.show2();
}
}
package Java;
public interface MyInterface {
void show1();
void show2();
}
package Java;
public class MyInterfaceImplOne implements MyInterface{
@Override
public void show1(){
System.out.println("One show1");
}
@Override
public void show2(){
System.out.println("One show2");
}
}
package Java;
public class MyInterfaceImplTwo implements MyInterface{
@Override
public void show1(){
System.out.println("Two show1");
}
@Override
public void show2(){
System.out.println("Two show2");
}
}
终端:
One show1
One show2
接口中默认方法的定义格式:
- 格式:public default 返回值类型 方法名(参数列表){ }
- 范例:public default void show3(){ }
接口中默认方法的注意事项:
- 默认方法不是抽象方法,所以不强制被重写。但是可以被重写,重写的时候去掉default关键字
- public可以省略,default不能省略
package Java;
/*
需求:
1.定义一个接口MyInterface,里面有两个抽象方法:
void show1();
void show2();
2.定义接口的两个实现类:
MyInterfaceImplOne
MyInterfaceImplTwo
3.定义测试类:
MyInterfaceDemo
在主方法中,按照多态的方式创建对象并使用
*/
public class MyInterfaceDemo {
public static void main(String[] args){
MyInterface my=new MyInterfaceImplOne();
my.show1();
my.show2();
my.show3();
}
}
package Java;
public interface MyInterface {
void show1();
void show2();
public default void show3(){
System.out.print("show3");
}
}
package Java;
public class MyInterfaceImplOne implements MyInterface{
@Override
public void show1(){
System.out.println("One show1");
}
@Override
public void show2(){
System.out.println("One show2");
}
}
package Java;
public class MyInterfaceImplTwo implements MyInterface{
@Override
public void show1(){
System.out.println("Two show1");
}
@Override
public void show2(){
System.out.println("Two show2");
}
}
终端:
One show1
One show2
show3
接口中静态方法
接口中静态方法的定义格式:
- 格式:public static 返回值类型 方法名(参数列表){ }
- 范例:public static void show(){ }
package Java;
/*
需求:
1.定义一个接口Inter,里面有三个方法:一个是抽象方法,一个是默认方法,一个是静态方法
void show();
default void method(){}
public static void test(){}
2.定义接口的一个实现类
InterImpl
3.定义测试类
InterDemo
在主方法中,按照多态的方式创建对象并使用
*/
public class InterDemo {
public static void main(String[] args){
Inter i=new InterImpl();
i.show();
i.method();
Inter.test();
}
}
package Java;
public interface Inter {
void show();
default void method(){
System.out.println("Inter中默认方法执行了");
}
public static void test(){
System.out.println("Inter中静态方法执行了");
}
}
package Java;
public class InterImpl implements Inter{
@Override
public void show(){
System.out.println("show方法执行了");
}
}
终端:
show方法执行了
Inter中默认方法执行了
Inter中静态方法执行了
接口中静态方法的注意事项:
- 静态方法只能通过接口名调用,不能通过实现类名或者对象名调用
- public 可以省略,static不能省略
接口中私有方法
接口中私有方法的定义格式:
- 格式1:private 返回值类型 方法名(参数列表){ }
- 范例1:private void show(){ }
- 格式2:private static 返回值类型 方法名(参数列表){ }
- 范例2:private static void method(){ }
package Java;
/*
需求:
1.定义一个接口Inter,里面有四个方法:二个默认方法,二个静态方法
default void show1(){}
default void show2(){}
static void method1(){}
static void method2(){}
2.定义接口的一个实现类
InterImpl
3.定义测试类
InterDemo
在主方法中,按照多态的方式创建对象并使用
*/
public class InterDemo {
public static void main(String[] args){
Inter i=new InterImpl();
i.show1();
System.out.println("------");
i.show2();
System.out.println("------");
Inter.method1();
System.out.println("------");
Inter.method2();
}
}
package Java;
public interface Inter {
default void show1(){
System.out.println("show1开始执行");
show();
System.out.println("show1结束执行");
}
default void show2(){
System.out.println("show2开始执行");
show();
System.out.println("show2结束执行");
}
private void show(){
System.out.println("初级工程师");
System.out.println("中级工程师");
System.out.println("高级工程师");
}
static void method1(){
System.out.println("method1开始执行");
method();
System.out.println("method1结束执行");
}
static void method2(){
System.out.println("method2开始执行");
method();
System.out.println("method2结束执行");
}
private static void method(){
System.out.println("初级工程师");
System.out.println("中级工程师");
System.out.println("高级工程师");
}
}
package Java;
public class InterImpl implements Inter{
}
终端:
show1开始执行
初级工程师
中级工程师
高级工程师
show1结束执行
------
show2开始执行
初级工程师
中级工程师
高级工程师
show2结束执行
------
method1开始执行
初级工程师
中级工程师
高级工程师
method1结束执行
------
method2开始执行
初级工程师
中级工程师
高级工程师
method2结束执行
接口中私有方法的注意事项:
- 默认方法可以调用私有的静态方法和非静态方法
- 静态方法只能调用私有的静态方法