zoukankan      html  css  js  c++  java
  • 『Java』接口的使用方法

    以下三个文件存在于同一个包下:

    1. 定义接口Dome_Interface.java
    package cn.xxmmqg.Interface;
    
    // 接口不能直接使用,必须有一个“实现类”来实现该接口
    // 接口的实现类必须覆盖接口中的所有抽象方法,如果没有全部覆盖重写,则实现类必须是抽象方法
    public interface Dome_Interface {
        // ==============抽象方法=================
        // 任何版本的java都可以定义抽象方法
        // 抽象方法的修饰符必须是 public abstract,且可以选择性省略
        public abstract void methodAbs1();
        public void methodAbs2();
        abstract void methodAbs3();
        void methodAbs4();
        // 以上都是抽象方法
    
        // ==============默认方法=================
        // 默认方法通过default修饰,而public 可以省略,但是【不能是其他的】
        // 默认方法可以通过【实现类】使用,而不需要被实现类重写
        public default void methodDef(){
            System.out.println("默认方法运行");
        }
        // 接口中可以定义默认方法,用于解决接口升级问题
        // 将新添加的接口功能定义成默认方法,那么已投入使用的实现类不需要改变也可使用该功能,实现类中也可以对其进行覆盖重写
    
        // ==============静态方法=================
        public static void methodSta(){
            System.out.println("接口的静态方法");
        }
    
        // ==============私有方法=================
        // 定义私有方法,用于解决多个【默认方法】代码重复的问题
        // 如果私有方法中加上修饰符static,就能解决多个【静态方法】代码重复问题
        private void methodPri(){
            System.out.println("重复代码运行");
        }
        public default void methodDef1(){
            System.out.print("methodDef1运行 ");
            this.methodPri();
        }
        public default void methodDef2(){
            System.out.print("methodDef2运行 ");
            this.methodPri();
        }
    
        // ==============成员变量=================
        // 接口中定义成员变量,但是必须使用 public static final三个关键字进行修饰,且可以选择性省略
        // 效果上看,就是接口的常量,以下定义方法中都是【常量】
        // 接口中的常量必须进行赋值
        public static final int NUM_1 = 10; // 常量一般使用全大写字母加下划线
        int NUM_2 = 11;
        public int NUM_3 = 12;
        static int NUM_4 = 13;
        final int NUM_5 = 14;
    }
    
    1. 定义接口的实现类Dome_Implement.java
    package cn.xxmmqg.Interface;
    
    public class Dome_Implement implements Dome_Interface{
        // 覆盖重写抽象方法
        @Override
        public void methodAbs1() {
            System.out.println("Abs1");
        }
        @Override
        public void methodAbs2() {
            System.out.println("Abs2");
        }
        @Override
        public void methodAbs3() {
            System.out.println("Abs3");
        }
        @Override
        public void methodAbs4() {
            System.out.println("Abs4");
        }
    }
    
    1. 主函数Dome_Main.java
    package cn.xxmmqg.Interface;
    
    public class Dome_Main {
    
        public static void main(String[] args) {
    
            Dome_Implement impl = new Dome_Implement();
    
            System.out.println("--------------------");
            impl.methodAbs1();
            impl.methodAbs2();
            impl.methodAbs3();
            impl.methodAbs4();
    
            System.out.println("--------------------");
            // 调用默认方法,如果实现类中没有定义,则向上找接口的
            impl.methodDef();
            impl.methodDef1();
            impl.methodDef2();
    
    
            System.out.println("--------------------");
            // 调用静态方法
    //        impl.methodSta(); // 不能通过接口实现类的对象来调用接口的静态方法,因为一个类可以实现多个接口,这些接口的静态方法有可能重名
            Dome_Interface.methodSta(); // 正确调用接口静态方法的方法
    
            System.out.println("--------------------");
            // 访问接口中的常量
            System.out.println(Dome_Interface.NUM_1);
            System.out.println(Dome_Interface.NUM_3);
        }
    }
    

    主函数运行结果:

    --------------------
    Abs1
    Abs2
    Abs3
    Abs4
    --------------------
    默认方法运行
    methodDef1运行 重复代码运行
    methodDef2运行 重复代码运行
    --------------------
    接口的静态方法
    --------------------
    10
    12
    
    
  • 相关阅读:
    Django REST framework (DRF)框架入门之权限【五】
    Django REST framework (DRF)框架入门之视图【四】
    Django REST framework (DRF)框架入门之序列化---反序列化【二】
    Django REST framework (DRF)框架入门之视图【三】
    Django REST framework (DRF)框架入门之序列化【一】
    Vue实现登录
    Vue--基础2
    Flask--数据库
    Django中orm相关操作
    django的生命周期
  • 原文地址:https://www.cnblogs.com/xxmmqg/p/14422569.html
Copyright © 2011-2022 走看看