zoukankan      html  css  js  c++  java
  • 接口

     


    1.接口就是一个类的公共规范
    2.接口是一种引用数据类型(其中最重要的是抽象方法)
    3.定义格式
    public interface 接口名称{
    //方法内容
    }

    允许包含的内容:
    jdk7:{常量、抽象方法}
    jdk8:{常量、抽象方法、默认方法、静态方法}
    jdk9(以上):{常量、抽象方法、默认方法、静态方法、私有方法}

    使用:
    1.接口不能直接使用,需要一个实现类来实现接口;
    实现类格式
    public class 实现类名称 implements 接口名称{

    }
    2.接口中的实现类必须覆盖重写接口中所有的抽象方法
    3.创建实现类的对象进行使用

    注意事项:
    1.如果实现类没有覆盖重写接口中所有的抽象方法,那么这个实现类必须是抽象类;
    2.接口没有静态代码块或构造方法;
    3.一个类的直接父类是唯一的,但是一个类可以同时实现多个接口;
    格式:
    public class 实现类名称 implements 接口名称1,接口名称2...{

    }
    4.若实现类所实现的多个接口中,存在重复的抽象方法,那么只需要覆盖重写一次即可;
    5.如果实现类实现多个接口中,存在重复的默认方法,那么实现类一定要对冲突的默认方法覆盖重写;
    6.一个类如果直接父类中的方法和接口当中的默认方法产生了冲突,那么优先使用父类方法;

    接口类的多继承
    1.类与接口是多实现的,一个类可以有多个接口;
    2.接口与接口是多继承的
    (多个父接口的默认方法重复,必须在子类方法中覆盖重写,而且要有default关键字)

    定义一个接口:

    有一个抽象方法poem01;两个默认方法poem02和poem03;

    一个静态方法poemname和一个常变量 NAME_ER="李白"。

     1 public interface Interface01 {
     2     //抽象方法
     3     //格式:public abstract 返回值类型 方法名称(参数);
     4     public abstract  void  poem01();//前面两个关键字是固定的,可以省略(会自动补全);
     5 
     6     //默认方法
     7     /*
     8     格式
     9     public default 返回值类型 方法名称(参数){
    10 
    11     }
    12 
    13     默认方法可以被实现类直接调用,也可以被实现类覆盖重写;
    14 
    15     可以解决接口升级的问题;
    16      */
    17     public default void poem02(){
    18         System.out.println("举杯邀明月,对影成三人");
    19     }
    20     public default void poem03(){
    21         System.out.println("醒时同交欢,醉后各分散");
    22     }
    23 
    24     //静态方法
    25     /*
    26     格式
    27     public static 返回值类型 方法名称(餐数){
    28 
    29     }
    30 
    31     不能通过接口实现类对象来调用接口中的静态方法,应直接通过接口名称来调用静态方法
    32      */
    33     public static void poemname(){
    34         System.out.println("月下独酌");
    35     }
    36 
    37     //私有方法
    38     /*
    39     抽取一个公共方法,解决两个默认(静态)方法重复代码问题,但这个方法不应该让实现类使用,应该私有化;
    40     private  (static) 返回值类型  方法名称(参数){
    41     方法体;
    42     }
    43 
    44     jdk9以上版本允许私有方法;
    45      */
    46 
    47     //常量
    48     /*
    49     常量变量必须使用 public static final  三个关键字修饰
    50     从效果上看与常量一样;
    51     格式
    52     public static final 数据类型  常量名 = 数据值;
    53     使用:接口名称.常量名
    54     (推荐命名:用大写字母和下划线进行分割)
    55      */
    56     public  static final String  NAME_ER="李白";
    57 }

    定义另一个接口

    独有的抽象方法dynasty;和接口1重名的默认方法poem02和抽象方法poem03;

    public interface Interface02 {
        public abstract  void  poem01();
        public abstract  void  dynasty(String str);
        public default  void  poem02(){
            System.out.println("月既不解饮,影徒随我身");
        }
    }

    定义一个父类

    使其拥有与接口1默认方法方法重名的方法poem03;

    public class ForAll {
        public void poem03(){
            System.out.println("醒时同交欢,醉后各分散"+"
    "+"永结无情游,相期邈云汉");
        }
    }

    定义一个实现类去继承上述父类并实现两个接口

    public class MidAutumn extends ForAll implements Interface01,Interface02{
        @Override
        public void poem01(){
            System.out.println("花间一壶酒,独酌无相亲");
        }
    
        @Override
        public void poem02() {
            System.out.println("举杯邀明月,对影成三人"+"
    "+"月既不解饮,影徒随我身"
                    +"
    "+"暂伴月将影,行乐须及春"+"
    "+"我歌月徘徊,我舞影零乱");
        }
    
        @Override
        public void dynasty(String str){
            System.out.print(str);
        }
    
    
    }

    输出测试

    public class Test04 {
        public static void  main(String[] args){
    
            Interface01.poemname();//直接用接口明调用静态方法
            MidAutumn poem = new MidAutumn();
            poem.dynasty("唐"+"	");
            System.out.println(Interface01.NAME_ER);
            poem.poem01();
            poem.poem02();
            poem.poem03();//优先用父类的方法
        }
    }

    输出结果

    /*
    月下独酌
    唐    李白
    花间一壶酒,独酌无相亲
    举杯邀明月,对影成三人
    月既不解饮,影徒随我身
    暂伴月将影,行乐须及春
    我歌月徘徊,我舞影零乱
    醒时同交欢,醉后各分散
    永结无情游,相期邈云汉
    */
  • 相关阅读:
    苏州大学2017年复试试题
    四川大学2019年复试试题
    四川大学2009年复试试题
    华东师范大学2019年复试试题
    华东师范大学2018年复试试题
    华东师范大学2017年复试试题
    华东师范大学2016年复试试题
    中国科学院大学2020年高等代数考研试题
    中国科学院大学2020年数学分析考研试题
    中国科学技术大学2020年高等代数考研试题
  • 原文地址:https://www.cnblogs.com/susexuexi011/p/13790375.html
Copyright © 2011-2022 走看看