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记录");
}
}

代码改变了我们,也改变了世界

浙公网安备 33010602011771号