• 接口


    1、什么是接口

    接口技术用于描述类具有什么功能,但不给出具体实现,类要遵从接口描述的统一规则进行定义,所以,接口是对外提供的一组规则、标准。

    定义接口使用关键字interface:interface 接口名{}

    类和接口是实现关系,用implements表示:class 类名 implements 接口名

    package com.wang.duixiang;
    
    public class InterfaceDemo01 {
        public static void main(String[] args) {
           // Smoking smoking=new Smoking() 接口不能实例化,它比抽象类更抽象
            Smoking smoking=new Teacher();
            smoking.smoke();
        }
    }
    //接口Smoking的实现类
    class Teacher implements Smoking{
        //接口中只是方法体,是抽象方法,所以要重写方法
        public void smoke(){
            System.out.println("抽烟有害健康");
        }
    }

    2、接口的特点

    接口创建对象的特点:

    ①接口不能实例化,可通过多态的方式实例化其子类对象

    ②接口的子类可以是抽象类,也可以是普遍类

    接口继承关系的特点:

    类与接口之间是实现的关系

    接口与接口之间的关系:继承关系,可以是单继承也可以是多继承:接口 extends 接口1,接口2,接口3...

    继承和实现的区别:继承体现的是“is a”的关系,父类中定义共性内容

                                       实现体现的是“like a”的关系,接口中定义扩展功能

    package com.wang.duixiang;
    
    public class InterfaceDemo02 {
        public static void main(String[] args) {
            //测试鼠标类
            USB usb=new Mouse1();
            usb.open();
            usb.close();
            //
        }
    }
    //鼠标类 普通类,重写接口中的成员方法
    class Mouse1 implements USB,A,B,C{//多实现
       public void open(){
           System.out.println("打开鼠标");
       }
       public void close(){
           System.out.println("断开鼠标连接");
       }
    }
    //键盘类 抽象类,不需要重写接口中的方法
    abstract class  KeyBoard implements USB{  
    }
    
    //接口多继承
    public interface C extends A,B,USB {
    }

    3、接口成员的特点

    接口成员变量的特点: 接口没有成员变量,只有公有的、静态的常量。因为接口中所有的变量都有默认的修饰符public static final 常量名=常量值

    接口成员方法的特点: 有抽象方法:public abstract 返回值类型 方法名();

                                               默认方法:public default 返回值类型 方法名(){}

                                               静态方法:static 返回值类型 方法名(){}

                                               私有方法:private 返回值类型 方法名(){}

    接口构造方法的特点: 接口不能实例化,也没有需要初始化的成员,所以接口没有构造方法

    public class InterfaceDemo03 {
        public static void main(String[] args) {
        //测试接口中的成员变量
            System.out.println(USB.NUM);//可以直接调用是因为num前有默认的修饰符public static final
            //USB.NUM=20; 报错 num是常量,值不能被修改
        }}
    
    public interface USB {
        int NUM=10;//接口中默认都是常量,要符合常量命名规范
        //成员方法  public abstract是默认修饰符
        public abstract void open();
        void close();
        //jdk8之后:
        //可以写静态方法
        public static void method(){
            System.out.println("我是jdk8的新特性");
        }
        //可以写默认方法
        public default void method1(){
            System.out.println("不写static时要加default");
        }
        /*jdk9之后:私有方法
        private void method2(){
            System.out.println("");
        }
           */
           //public USB(){} 报错,因为接口中没有构造方法  
    }
  • 相关阅读:
    数据结构与算法的思维导图
    第九周知识总结
    第八周知识总结
    作业七:问卷调查

    图的基本概念及基本术语
    二叉树

    队列

  • 原文地址:https://www.cnblogs.com/wyj96/p/11763269.html
Copyright © 2020-2023  润新知