美文网首页
Java基础系列19-接口interface

Java基础系列19-接口interface

作者: 只是甲 | 来源:发表于2021-08-20 14:10 被阅读0次

    一.接口概述

      Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。

      继续回到我们的猫狗案例,我们想想狗一般就是看门,猫一般就是作为宠物了。
      但是,现在有很多的驯养员或者是驯兽师,可以训练出:猫钻火圈,狗跳高,狗做计算等。而这些额外的动作,并不是所有猫或者狗一开始就具备的,这应该属于经过特殊的培训训练出来的。
      所以,这些额外的动作定义到动物类中就不合适,也不适合直接定义到猫或者狗中,因为只有部分猫狗具备这些功能。
      所以,为了体现事物功能的扩展性,Java中就提供了接口来定义这些额外功能,并不给出具体实现,将来哪些猫狗需要被训练,只需要这部分猫狗把这些额外功能实现即可。

    二.接口的特点

    接口的特点:

    1. 接口格式
    public interface 接口名 {}
    

    类实现接口 (用 implements 表示)

    public class 类名 implements 接口名 {}
    
    1. 特点
      1)接口不能实例化
      2)那么,接口如何实例化呢?
        按照多态的方式,由具体的实现类实例化。其实这也是多态的一种,接口多态。
      3)接口的实现类
        要么是抽象类
        要么重写接口中的所有抽象方法

    代码:
    interface1

    package Java_study;
    
    /**
     * 
     * @author  只是甲
     * @date    2021-06-28
     * @remark  跳高接口  接口的特点
     *
     */
    public interface interface1 {
        //抽象方法
        public abstract void jump();
    }
    

    interface2

    package Java_study;
    
    /**
     * 
     * @author  只是甲
     * @date    2021-06-28
     * @remark  跳高接口的实现类-猫类  接口的特点
     *
     */
    public class interface2 implements interface1 {
        @Override
        public void jump() {
            System.out.println("猫可以跳高了");
        }
    
    }
    

    interface3

    package Java_study;
    
    /**
     * 
     * @author  只是甲
     * @date    2021-06-28
     * @remark  跳高接口的实现类-狗类  接口的特点
     *
     */
    public abstract class interface3 implements interface1 {
    
    }
    

    interface4

    package Java_study;
    
    /**
     * 
     * @author  只是甲
     * @date    2021-06-28
     * @remark  跳高接口的实现类-测试类  接口的特点
     *
     */
    public class interface4 {
        public static void main(String[] args) {
            //C:接口不能实例化
            //interface1 i1 = new interface1();
            
            //c1:参照多态的形式使用实现类来实例化。
            interface1 jumpping = new interface2();
            jumpping.jump();//猫可以跳高了
        }
    
    }
    

    三. 接口的成员特点

    成员变量:
      只能是常量
      默认修饰符 public static final

    构造方法:
      没有,因为接口主要是扩展功能的,而没有具体存在

    成员方法:
      只能是抽象方法
      默认修饰符 public abstract

    代码:
    interface5

    package Java_study;
    
    /**
     * 
     * @author  只是甲
     * @date    2021-06-28
     * @remark  接口类  接口的成员特点
     *
     */
    public interface interface5 {
        public int num1 = 10;
        public final int num2 = 20;
        public static final int num3 = 30;
        
        //接口没有构造器
        //public interface5() {}
        
        //接口不能有方法体
        //public void show() {}
        
        //接口的抽象方法
        public abstract void method();
    
    }
    

    interface6

    package Java_study;
    
    /**
     * 
     * @author  只是甲
     * @date    2021-06-28
     * @remark  接口类的实现类  接口的成员特点
     *
     */
    public class interface6 implements interface5 {
        
        public interface6() {
            super();
        }
        
        @Override
        public void method() {
            
        }
    
    }
    

    interface7

    package Java_study;
    
    /**
     * 
     * @author  只是甲
     * @date    2021-06-28
     * @remark  接口类的测试类  接口的成员特点
     *
     */
    public class interface7 {
        public static void main(String[] args) {
            //按照多态的形式创建接口对象
            interface6 i1 = new interface6();
            
            //interface5.num1 = 30; //无法为最终变量num1分配值
            //System.out.println(i1.num);
            
            //i.num2 = 40;//无法为最终变量num2分配值
            //System.out.println(i.num2);
            
            System.out.println(interface6.num1);//10
            System.out.println(interface6.num2);//20
        }
    
    }
    

    四. 类与类类与接口接口与接口的关系

    类与类:
      继承关系,只能单继承,但是可以多层继承

    类与接口:
      实现关系,可以单实现,也可以多实现。还可以在继承一个类的同时实现多个接口

    接口与接口:
      继承关系,可以单继承,也可以多继承

    代码:
    interface8

    package Java_study;
    
    /**
     * 
     * @author   只是甲
     * @date     2021-06-28
     * @remark   父类接口1   类与类_类与接口_接口与接口的关系
     *
     */
    public interface interface8 {
    
    }
    

    interface9

    package Java_study;
    
    /**
     * 
     * @author   只是甲
     * @date     2021-06-28
     * @remark   父类接口2   类与类_类与接口_接口与接口的关系
     *
     */
    public interface interface9 {
    
    }
    

    interface10

    package Java_study;
    
    /**
     * 
     * @author   只是甲
     * @date     2021-06-28
     * @remark   子类1   类与类_类与接口_接口与接口的关系
     *
     */
    public class interface10 extends Object implements interface8,interface9 {
    
    }
    

    interface11

    package Java_study;
    
    /**
     * 
     * @author   只是甲
     * @date     2021-06-28
     * @remark   子类2   类与类_类与接口_接口与接口的关系
     *
     */
    public class interface11 extends interface10 implements interface8,interface9 {
    
    }
    

    interface12

    package Java_study;
    
    /**
     * 
     * @author   只是甲
     * @date     2021-06-28
     * @remark   测试类   类与类_类与接口_接口与接口的关系
     *
     */
    public class interface12 {
        public static void main(String[] args) {
            //实例化对象
            interface11 sister = new interface11();
            
            //c1:参照多态的形式使用实现类来实例化。
            interface8 son = new interface10();
        }
    
    }
    
    

    五. 抽象类与接口的区别

    1. 成员区别
      抽象类:
      1)成员变量:可以是变量,也可以是常量
      2)构造方法:有构造方法
      3)成员方法:可以是抽象方法,也可以是非抽象方法
      接口:
      1)成员变量:只能是常量
      2)构造方法:没有构造方法
      3)成员方法:只能是抽象方法

    2. 关系区别
      1)类与类:继承关系,只能单继承,可以多层继承
      2)类与接口:实现关系,可以单实现,也可以多实现
      3)接口与接口:继承关系,可以单继承,也可以多继承

    3. 设计理念的区别
      1)抽象类 被继承体现的是:"is a"抽象类中定义的是继承体系的共性功能
      2)接口 被实现体现的是:“like a” 接口中定义的是该体系的扩展功能

    4. 举例
      1)猫,动物
      2)猫,跳高运动员

    参考:

    1. https://blog.csdn.net/qq_43529621/article/details/115303081

    相关文章

      网友评论

          本文标题:Java基础系列19-接口interface

          本文链接:https://www.haomeiwen.com/subject/zbroyltx.html