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

    }
}

  

 

posted @ 2023-03-13 09:40  文采呱呱  阅读(20)  评论(0编辑  收藏  举报