Java基础-接口中的默认、静态、私有方法的组成以及注意事项

本文详细介绍了Java接口的组成部分,包括默认方法、静态方法和私有方法。对于默认方法,强调了其在接口升级时的作用以及可以被重写的特点;对于静态方法,指出只能通过接口名调用,并且不能通过实现类或对象调用;对于私有方法,提到默认方法可以调用私有静态和非静态方法,而静态方法只能调用私有静态方法。
摘要由CSDN通过智能技术生成

接口的组成和更新

接口的组成更新:
    常量:
        public static final
    抽象方法:
        public abstract
    默认方法 Java8
    静态方法 Java8 
    私有方法 Java9
接口中的默认方法:

接口中的默认方法:----->主要用于现有接口的升级而不破坏现有的代码

     接口中默认方法得定义:
        格式:
            public default返回值类型方法名(参数列表){}
        范例:
            public default void show3(){}
    
	需求:
        1.定义一个接口:MyInterface,里面有两个抽象方法
            void show1();
            void show2();
        2.定义接口的两个实现类:
            MyInterfaceImplOne
            MyInterfaceImplTwo
        2.定义测试类:
            MyInterfaceDemo
            在主方法中,按照多态的方式创建对象并使用

接口中默认方法的注意事项
1. 默认方法不是抽象方法,所以不强制重写。但是可以被重写,重写的时候去点default关键字
2. public可以省略,default不可以省略

MyInterface.java 主文件

  public static void main(String[] args) {
        //按照多态的方式创建对象并使用
        MyInterface my = new MyInterfaceImplOne();
        my.show1();
        my.show2();
        my.show3();
    }

MyInterface.java接口文件

public interface MyInterface {

    void show1();

    void show2();

    //void show3();//如果这样添加的话,在就需要在MyInterfacelmplOne和MyInterfacelmplTwo中重写该方法
    //否则就需要再写一个子接口继承该接口实现其功能

//默认方法,可以重写 在重写得时候需要去掉default,默认方法不会强制实现类去重写默认方法
//    public default void show3(){
//        System.out.println("show3!");
//    }

    default void show3(){//public可以省略
        System.out.println("show3!");
    }
}

MyInterfaceSon.java MyInterface.java接口的子接口文件

public interface MyInterfaceSon extends MyInterface {
    void show3();//系统需要添加功能方法得时候,添加得方法
}

MyInterface.java 接口的实现类 MyInterfaceimplOne.java 文件

public class MyInterfaceImplOne implements MyInterface {
    @Override
    public void show1() {
        System.out.println("One show1!");
    }

    @Override
    public void show2() {
        System.out.println("One show2!");
    }

    @Override
    public void show3() {
        System.out.println("One show3!");
    }
}

MyInterface.java 接口的实现类 MyInterfaceimplTwo.java 文件

public class MyInterfaceImplTwo implements MyInterface {
    @Override
    public void show1() {
        System.out.println("Two show1!");
    }

    @Override
    public void show2() {
        System.out.println("Two show2!");
    }

    @Override
    public void show3() {
        System.out.println("Two show3!");
    }
}

实现结果:

  One show1!
  One show2!
  One show3!
接口中的静态方法:
接口中静态方法的定义格式:
    格式:
        public static 返回值类型 方法名(参数列表){}
    范例:
        public static void show(){}
 需求:
    1.定义一个接口Inter,里面有三个方法:一个抽象方法,一个默认方法,一个静态方法
        void show();
        default void method(){}
        public static void test(){}
    2. 定义一个接口的实现类:
        InterImpl
    3.定义测试类
        InterDemo
        在主方法中,按照多态的方式创建并使用

接口中的静态方法的注意事项
1. 静态方法只能通过接口名调用,不能通过实现类名或者对象名调用
2. public可以省略,static不能省略

InterDemo.java 主文件

    public static void main(String[] args) {
        //按照多态的方式创建并使用
        Inter i = new InerImpl();
        i.show();
        i.method();
        //i.test();//接口中的静态方法只能由接口实现

        Inter.test();
    }

Inter.java 接口文件

public interface Inter {//Inter接口
    //抽象方法
    void show();

    //默认方法
    default void method(){
        System.out.println("Inter中的默认方法执行了!!");
    }

    //静态方法
//    public static void test(){
//        System.out.println("Inter中的静态方法实现了!!");
//    }

    static void test(){//public关键字可以省略
        System.out.println("Inter中的静态方法实现了!!");
    }
}

Inter.java 接口的实现类 Interlmpl.java 文件

public class InerImpl implements Inter{//Inter接口的实现类

    @Override
    public void show() {
        System.out.println("Inter中的抽象方法show实现了!!");
    }
}

实现结果:

Inter中的抽象方法show实现了!!
Inter中的默认方法执行了!!
Inter中的静态方法实现了!!
接口中的私有方法:
接口中的私有方法定义格式:
    格式1:
        private返回值类型 方法名(参数列表){}
    范例:
        private void show(){}
    格式2:
        private static 返回值类型 方法名 (参数列表){}
    范例:
        private static void method(){}
需求:
    1.定义一个接口Inter,里面四个方法:两个默认方法,两个静态方法
        default void show1(){}
        default void show2(){}
        static void method1(){}
        static void method2(){}
    2.定义接口的实现类
        InterImpl
    3.定义测试类:
        InterDemo
        在主方法中,按照多态的方式创建并使用

接口中私有方法的注意事项
1. 默认方法可以调用私有的静态方法和非静态方法
2. 静态方法只能调用私有的静态方法

InterDemo.java 主文件

    public static void main(String[] args) {
        Inter i = new InterImpl();

        i.show1();
        i.show2();

        Inter.method1();
        Inter.method2();
    }

Inter.java接口文件

public interface Inter {
    //两个默认方法
    default void show1(){
        System.out.println("show1开始执行!!");
//        System.out.println("初级工程师!!");
//        System.out.println("中级工程师!!");
//        System.out.println("高级工程师!!");
        show();
        //method();//默认方法可以调用私有静态方法
        System.out.println("show1结束执行!!");
    }

    default void show2(){
        System.out.println("show2开始执行!!");
//        System.out.println("初级工程师!!");
//        System.out.println("中级工程师!!");
//        System.out.println("高级工程师!!");
        show();
        System.out.println("show2结束执行!!");
    }

    private void show(){//私有方法
        System.out.println("初级工程师!!");
        System.out.println("中级工程师!!");
        System.out.println("高级工程师!!");
    }

    //两个静态方法
    static void method1(){
        System.out.println("method1开始执行!!");
//        System.out.println("初级工程师!!");
//        System.out.println("中级工程师!!");
//        System.out.println("高级工程师!!");
        ///show();//报错  静态方法不能调用非静态方法
        method();
        System.out.println("method1结束执行!!");
    }

    static void method2(){
        System.out.println("method2开始执行!!");
//        System.out.println("初级工程师!!");
//        System.out.println("中级工程师!!");
//        System.out.println("高级工程师!!");
        method();
        System.out.println("method2结束执行!!");
    }

    private static void method() {//私有的静态方法
        System.out.println("初级工程师!!");
        System.out.println("中级工程师!!");
        System.out.println("高级工程师!!");
    }
}

InterImpl.java Inter.java接口实现类

public class InterImpl implements Inter {
	//
}

实现结果:

show1开始执行!!
初级工程师!!
中级工程师!!
高级工程师!!
show1结束执行!!
show2开始执行!!
初级工程师!!
中级工程师!!
高级工程师!!
show2结束执行!!
method1开始执行!!
初级工程师!!
中级工程师!!
高级工程师!!
method1结束执行!!
method2开始执行!!
初级工程师!!
中级工程师!!
高级工程师!!
method2结束执行!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值