java进阶 JDK8-JDK9 32
jdk8 -default:为了解决接口升级问题
package com.cyjt97.Paymentsystem;
public interface pay {
void money(double money);
// jdk8新特性 -------default
public default void method(){
System.out.println("method");
}
}
package com.cyjt97.Paymentsystem; public class platform implements pay{ @Override public void money(double money) { System.out.println("已用支付平台支付"+money); } }
package com.cyjt97.Paymentsystem; public class onlineBanking implements pay{ @Override public void money(double money) { System.out.println("已用网银支付"+money); } }
package com.cyjt97.Paymentsystem; public class bankCard implements pay{ @Override public void money(double money) { System.out.println("已用银行卡支付"+money); } }
package com.cyjt97.Paymentsystem;
import java.util.Scanner;
public class payment {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请选择您的支付平台:1,支付平台 2,银行卡支付 3,网银支付");
int check = sc.nextInt();
pay pay = null;
switch (check){
case 1:
pay =new platform();
break;
case 2:
pay =new bankCard();
break;
case 3:
pay =new onlineBanking();
break;
}
System.out.println("请输入您的支付金额");
double money = sc.nextDouble();
pay.money(money);
// jdk8新特性
pay.method();
}
}
jdk8新特性案例:
package com.cyjt97.specially;
public class interA {
public static void main(String[] args) {
AAA ps = new AAA();
ps.method();
}
}
// 写完逻辑后添加新方法会报错,需要使用default
// 这是jdk8的新特性
//void method(){
// System.out.println("method");
//}
//1.允许定义非抽象方法,需要加入 default关键字
// 作用:解决接口的升级问题
// 注意事项:
// 1. public可以省略,但是 default不能省略
// 2.默认方法,实现类是允许重写的,但是需要去掉 default关键字
// 3.如果实现了多个接口,多个接口中存在相同的默认方法,实现类必须重写默认方法
//2,允许定义静态方法:
// 理解:既然接口已经允许方法体了,干脆也分开静态方法,可以类名调用
//注意事项:
// 1.pubilc可以省略,但是static不能
// 2.接口中的静态方法,只允许接口名调用,不允许实现类接口调用
interface interM{
// 1. public可以省略,但是 default不能省略
default void method(){
System.out.println("interM的method");
}
// 1.pubilc可以省略,但是static不能
// 2.接口中的静态方法,只允许接口名调用,不允许实现类接口调用
static void method2(){
System.out.println("interM的method");
}
}
interface Inter {
void show();
default void method(){
System.out.println("Inter的method");
}
}
class AAA extends Object implements Inter,interM{
@Override
public void show() {
System.out.println("show");
}
@Override
public void method() {
System.out.println("method");
Inter.super.method();
interM.super.method();
}
}
jdk9新特性:
允许定义私有方法:
package com.cyjt97.specially; public class interB { public static void main(String[] args) { } } //jdk9新特性 //没用新特性前: //interface inter{ // void show(); // void method(); // // public default void start(){ // System.out.println("start"); // System.out.println("log记录"); // } // public default void end(){ // System.out.println("end"); // System.out.println("log记录"); // } // //} //用后: //jdk9: // 允许定义私有方法 // 优化重复代码 interface inter{ void show(); void method(); public default void start(){ System.out.println("start"); log(); } public default void end(){ System.out.println("end"); log(); } private void log(){ System.out.println("log记录"); } }
代码改变了我们,也改变了世界