介面組成更新
介面的組成:常量,抽象方法
- Java8之前
- 常量:public static final
- 抽象方法:public abstract
- 默認方法(Java8)
- 靜態方法(Java8)
- 私有方法(Java9)
介面中默認方法(Java8)
介面中默認方法的格式:
- 格式:public default 回傳值型別 方法名(引數串列){}
- 定義一個介面,里面有兩個抽象方法,以及一個默認方法:
public interface MyInterface {
void show1();
void show2();
//默認方法,有方法體
//public關鍵字可以省略
public default void show3(){
System.out.println("MyInterface show3");
}
}
- 定義介面的實作類,實作介面中的抽象方法:
public class MyInterfaceImpl1 implements MyInterface {
@Override
public void show1() {
System.out.println("1.show1");
}
@Override
public void show2() {
System.out.println("1.show2");
}
}
- 定義測驗類:
public class MyInterfaceDemo {
public static void main(String[] args) {
//按照多型的方式創建物件并使用
MyInterface my = new MyInterfaceImpl1();
my.show1();
my.show2();
my.show3();
}
}
- 運行結果:
1.show1
1.show2
MyInterface show3
- 介面中的show3方法也能夠在介面的實作類中重寫:
public class MyInterfaceImpl1 implements MyInterface {
@Override
public void show1() {
System.out.println("1.show1");
}
@Override
public void show2() {
System.out.println("1.show2");
}
//重寫介面中的默認方法show3
@Override
public void show3() {
System.out.println("1.show3");
}
}
- 運行測驗類:
1.show1
1.show2
1.show3
介面中默認方法的注意事項:
- 介面中的默認方法不是抽象方法,不強制重寫,但可以重寫,重寫時去掉關鍵字default
- 介面中的默認方法,public關鍵字可以省略,但default關鍵字不能省略
介面中靜態方法(Java8)
介面中靜態方法的格式:
- 格式:public static 回傳值型別 方法名(引數串列){}
- 定義一個介面,里面有抽象方法,默認方法和靜態方法:
public interface Inter {
//抽象方法
void show1();
//默認方法
default void show2(){
System.out.println("Inter show2");
}
//靜態方法,public關鍵字可以省略,static關鍵字不能省略
public static void show3(){
System.out.println("Inter show3");
}
}
- 定義一個介面的實作類,并實作介面中的抽象方法:
public class InterImpl implements Inter{
@Override
public void show1() {
System.out.println("InterImpl show1");
}
}
- 定義測驗類
public class InterDemo {
public static void main(String[] args) {
//多型的方式創建物件
Inter id = new InterImpl();
id.show1();
id.show2();
//介面中的靜態方法,只能被介面呼叫
Inter.show3();
}
}
- 運行結果:
InterImpl show1
Inter show2
Inter show3
介面中靜態方法的注意事項:
- 介面中靜態方法只能通過介面名呼叫,不能通過實作類名或者物件名呼叫
- 介面中靜態方法的public關鍵字可以省略,static關鍵字不能省略
介面中私有方法(Java9)
介面中私有方法的格式:
- 格式1:private 回傳值型別 方法名(引數串列){}
- 格式2:private static 回傳值型別 方法名(引數串列){}
- 定義一個介面,里面有抽象方法,默認方法和靜態方法:
public interface Interf {
//抽象方法
void show1();
//默認方法
default void show2(){
System.out.println("默認方法開始");
//默認方法可以呼叫非靜態私有方法,也可以呼叫靜態私有方法
show4();
show5();
System.out.println("默認方法結束");
}
//靜態方法
static void show3(){
System.out.println("靜態方法開始");
//靜態方法只能呼叫靜態私有方法
show5();
System.out.println("靜態方法結束");
}
//私有方法1,非靜態私有方法
private void show4(){
System.out.println("私有方法1");
}
//私有方法2,靜態私有方法
private static void show5(){
System.out.println("私有方法2");
}
}
- 定義一個介面的實作類,并實作介面中的抽象方法:
public class InterfImpl implements Interf{
@Override
public void show1() {
System.out.println("InterfImpl show1");
}
}
- 定義測驗類:
public class InterfDemo {
public static void main(String[] args) {
//多型方式創建物件
Interf i = new InterfImpl();
i.show1();
System.out.println("-------------");
i.show2();
System.out.println("-------------");
//介面名呼叫靜態方法
Interf.show3();
}
}
- 運行結果:
InterfImpl show1
-------------
默認方法開始
私有方法1
私有方法2
默認方法結束
-------------
靜態方法開始
私有方法2
靜態方法結束
介面中私有方法的注意事項:
- 介面中的默認方法,可以呼叫非靜態私有方法,也可以呼叫靜態私有方法
- 靜態方法只能呼叫私有的靜態方法
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/540850.html
標籤:Java
