• Java之接口(interface)的理解


    1.接口在Java中使用interface关键字来定义 

    2.在Java中接口和类是并列的结构

    3.如何定义接口?定义接口中的成员 

      3.1 jdk7以及以前:只能够定义全局常量和抽象方法

        全局常量:public、static、final(但是书写时,可以省略不写) 

        抽象方法:public、abstract(可以省略不写) 

      3.2 jdk8:除了定义全局常量和抽象方法以外,还可以定义静态方法、默认方法

    4.接口中不能定义构造器。意味着接口不能实例化

    5.Java开发中,接口通过让类去实现(implements)的方式来使用

      如果实现类覆盖了接口中所有的抽象方法,则此实现类就可以实例化

      如果实现类没有覆盖接口中所有抽象方法,则此实现类任然为一个抽象类 

      如果实现类的时候,该接口有继承性,该实现类需要去覆盖接口和父接口的所有抽象方法,则此实现类就可以实例化 

    6.Java类可以实现多个接口,弥补了Java类的单继承性的局限性

    7.有继承有实现的类格式:

    class 子类名 extends 父类名 implements 接口名1,接口名2 

    8.接口与接口之间可以多继承

    9.接口的具体使用,可以体现多态性 

    10.接口,实际上可以看做是一种规范

    /**
     * 接口的使用
     */
    
    public class InterfaceTest {
        public static void main(String[] args) {
    
            //报错,因为是默认加了public static final,final修饰的属性无法修改
            //Person.name = "李四";
            System.out.println("学生的最多学习时长"+Student.studyMaxTime);
            Student student =new Student("小明");
            student.studyMethod();
        }
    }
    
    //声明接口
    interface Study{
        //接口中不能定义构造器
    
        //定义全局常量
        public static final int studyMaxTime = 199;
    
        //省略了public static final
        int studyMinTime =10;
    
        //定义抽象方法
        public abstract void studyMethod();
    
        //省略了public abstract
        void studyDomain();
    
        String getName();
    }
    
    interface Play{
        void play();
    }
    
    
    //使用具体的class去实现接口
    class Student implements Study,Play{
        //重写了接口Person中的所有的抽象方法
        private String name;
    
        public Student(String name){
            this.name = name;
        }
        @Override
        public void studyMethod(){
            System.out.println("聪明的学生有较好的学习方式");
        }
    
        @Override
        public void studyDomain() {
            System.out.println(this.name+" run");
        }
    
        @Override
        public String getName() {
            return this.name;
        }
    
        @Override
        public void play() {
            System.out.println("学生没有时间玩耍");
        }
    }
    
    abstract class Man implements Study{
        //没有重写接口Person所有的抽象方法,只能表明是抽象类,不然就报错了
        @Override
        public void studyMethod(){
            System.out.println("一部分男人没有时间学习");
        }
    }
  • 相关阅读:
    vue六十五:vuex-getters和vuex-mapGetters
    vue六十四:vuex-mapStore
    vue六十三:vuex的异步处理
    vue六十二:vuex的同步状态管理和调试工具vue-devtools
    vue六十一:使用vuex管理状态示例
    vue六十:电影院售票项目案例之影院页面和使用Better-Scroll实现拖拉滚动
    vue五十九:电影院售票项目案例之详情页面
    vue五十八:电影院售票项目案例之项目吸顶效果
    ingress 413 Request Entity Too Large
    kubeadm搭建K8S集群
  • 原文地址:https://www.cnblogs.com/king2/p/14603762.html
Copyright © 2020-2023  润新知