zoukankan      html  css  js  c++  java
  • Java日志第18天 2020.7.23

    接口

    接口是一种公共规范标准。

    接口是一种引用数据类型,最重要的内容是抽象方法

    使用interface关键字

    接口当中的抽象方法,修饰符必须是两个关键字,public、abstract,两个关键字个选择性省略。

    public interface MyInterface {
    
        public abstract void method1();
        //省略abstract
        public void method2();
        //省略public
        abstract void method3();
    }

    接口使用步骤

    1.接口不能直接使用,必须有一个“实现类”来实现接口。

    格式:

    public class 实现类名称 implements 接口名称{

      //方法体

    }

    2.接口的实现必须覆盖重写接口中所有的抽象方法

    public class MyInterfaceImpl implements MyInterface {
    
        @Override
        public void method1() {
            System.out.println("实现方法1");
        }
    
        @Override
        public void method2() {
            System.out.println("实现方法2");
        }
    
        @Override
        public void method3() {
            System.out.println("实现方法3");
        }
    }

    3.创建实现类的对象进行使用。

    public class Demo01MyInterface {
    
        public static void main(String[] args) {
    
            MyInterfaceImpl myInterface = new MyInterfaceImpl();
            myInterface.method1();
            myInterface.method2();
            myInterface.method3();
        }
    }

    结果如下

    *如果实现类中并没有覆盖重写接口中所有的方法,这个类是抽象类

    接口定义默认方法

    Java 8之后,允许接口定义默认方法,格式如下:

    public default 返回值类型 方法名称(参数列表) { 方法体 }

    默认方法可以解决接口升级问题

    当一个接口有很多的实现类,此时需要定义一个新的方法,不需要在各个需要类中编写方法,而在接口中定义默认方法即可实现。方便了接口的升级。

    public interface MyInterface {
    
        public abstract void method1();
        //省略abstract
        public void method2();
        //省略public
        abstract void method3();
    
        public default void method4(){
            System.out.println("实现方法4");
        }
    }
    public class Demo01MyInterface {
    
        public static void main(String[] args) {
    
            MyInterfaceImpl myInterface = new MyInterfaceImpl();
            myInterface.method1();
            myInterface.method2();
            myInterface.method3();
            myInterface.method4();
        }
    }

    结果如下

    如果在实现类中重写定义默认方法,调用是会调用实现类方法

    public class MyInterfaceImplB implements MyInterface {
        @Override
        public void method1() {
            System.out.println("实现方法1");
        }
    
        @Override
        public void method2() {
            System.out.println("实现方法2");
        }
    
        @Override
        public void method3() {
            System.out.println("实现方法3");
        }
    
        @Override
        public void method4(){
            System.out.println("实现类实现方法4");
        }
    }
    public class Demo01MyInterface {
    
        public static void main(String[] args) {
    
            MyInterfaceImpl myInterface = new MyInterfaceImpl();
            myInterface.method1();
            myInterface.method2();
            myInterface.method3();
            myInterface.method4();
    
            System.out.println("================");
            MyInterfaceImplB myInterface2 = new MyInterfaceImplB();
            myInterface2.method1();
            myInterface2.method2();
            myInterface2.method3();
            myInterface2.method4();
        }
    }

    结果如下

    定义静态方法

    Java 8之后,接口当中允许定义静态方法,格式如下:

    public static 返回值类型 方法名称( 参数列表 ) { 方法体 }

    public interface MyInterface {
        
        //定义静态方法
        public static void method(){
            System.out.println("实现静态方法");
        }
        
    }
    public class Demo01MyInterface {
    
        public static void main(String[] args) {
            //报错!
      //        MyInterfaceImpl myInterface = new MyInterfaceImpl();
        //    myInterface.method5();
    
            MyInterface.method();
        }
        
    }

    注意:不能通过接口实现类的对象来调用接口的静态方法,需要通过接口名称直接调用静态方法。

    定义私有方法

    Java 9之后,接口允许定义私有方法

    1.普通私有方法:解决多个默认方法之间重复代码问题,格式如下:

    private 返回值类型 方法名称

    ( 参数列表 ) { 方法体 }

    2.静态私有方法:解决多个静态方法之间重复代码问题,格式如下:

    private static 返回值类型 方法名称 ( 参数列表 ) { 方法体 }

    public interface MyInterface {
    
        public default void methodA(){
            System.out.println("A");
        }
    
        public default void methodB(){
            System.out.println("B");
        }
        //私有方法
        private void method(){
            System.out.print("实现方法");
        }
    }

    定义成员变量

    必须使用public static final三个关键字,所以其实是一个常量,一旦赋值便不可修改。

    注意事项:

    1.三个关键字可以省略,省略与否效果都是一样的。

    2.接口中的常量必须赋值。

    3.接口中常量名称全部大写,用下划线分隔单词

    使用方法:

    接口名称.成员变量名称

    public interface MyInterface {
    
        public static final int NUM_OF_CLASS = 10;
        int NUM_OF_SEAT = 5;
    }
    public class Demo01MyInterface {
    
        public static void main(String[] args) {
            System.out.println("The number of class is "+MyInterface.NUM_OF_CLASS);
    
            System.out.println("The number of seat is "+MyInterface.NUM_OF_SEAT);
        }
    
    }

    结果如下:

  • 相关阅读:
    认识 liunx 文件属性
    laravel 配置mongodb 出现 Database [text] not configured 问题【已解决】
    php 判断字符串的长度的两种方法
    php 循环里面套sql怎么解决
    php 给入门新手们填的第一个坑
    Vue 调用其他Vue或自己Vue中的方法时,this指向不生效
    绑定点击事件触发多次
    computed 计算属性的获取和设置
    el-Cascader 最后一项删不掉
    前端 --- 格式化的配置
  • 原文地址:https://www.cnblogs.com/Gazikel/p/13368122.html
Copyright © 2011-2022 走看看