Java之接口

Java之接口,第1张

Java之接口 一、接口笔记

1.接口是什么?
一种公共的规范标准
2.接口的数据类型与名称格式?
引用数据类型,大驼峰
3.接口中抽象方法没有方法体,即不包含大括号
4.抽象方法的修饰符必须为固定的两个关键字 public abstract,可以选择性的省略
5.接口不能直接使用,必须要有一个实现类来实现该接口
public class 类名 implements 接口一,接口二
6.接口的实现类要覆盖重写接口中的所有抽象方法
7.对于在idea中,实现类快速实现接口中所有抽象方法:将光标放在实现类上,Alt + Enter 选择第一项,选择所有抽象方法,然后点击OK
8.关于Override?
(1)当做注释用,一般用于覆盖重写,方便阅读
(2)编译器可以帮助验证@Override下面的方法是否是父类或者接口中所有的,如果不是则报错。如果想重写父类中的某个方法,如果没写@Override,而下面的方法又写错了,有时编译器是可以通过的,因为编译器以为这个方法是你子类中自己曾加的方法。
9.实现类要实现接口的所有抽象方法,如果没有,就要将该实现类定义为抽象类型
10java8之后开始支持在接口中定义默认方法,好处在于:在接口升级的时候(升级:为接口添加新的方法),如果添加是抽象方法,则就要去为所有实现该接口的类去添加新的抽象方法的重写覆盖,否则那些类就无法使用了。
11.接口中的默认方法会被实现类继承,也可以被实现类覆盖重写,实现类的对象可以直接调用,优先在当前类中寻找是否存在该方法。
12.java8开始支持接口中添加静态方法,就是可以共享的部分。
13.静态方法的使用一般为类名.静态方法直接完成调用,在接口中的使用方法为:接口名.静态方法。不能通过实现类的对象来调用接口中的静态方法
14.从java9开始,接口中允许定义私有方法。分为两种:
普通私有方法(针对java8的默认方法):解决多个默认方法之间重复代码的问题
private 返回值类型 方法名(参数列表)
静态私有方法:(针对java8的静态方法):解决多个静态方法之间重复代码的问题
private static 返回值类型 方法名(参数列表)
15.对于接口中的常量
定义格式:public static final 数据类型 常量名 = 常量值;
关键字说明:static -> 与对象无关、final -> 不能改变
命名规则:采用完全大写的命名规则,多个单词之间使用下划线连接


 

---------------------------------------------------------------------------------------------------------------------------------

在java9+版本中,接口的内容:(小结)
1.成员变量实际为常量
[public] [static] [final] 数据类型 常量名称 = 常量值;
注意:常量必须进行赋值,而且一但赋值后不能再改变;常量名完全大写,用下划线分隔
2.接口中最重要的是抽象方法
[public] [abstract] 返回值类型  方法名称(参数列表) {方法体}
注意:实现类要实现接口的所有抽象方法,除非为抽象类
3.从java8开始,接口中允许定义默认方法和静态方法
默认方法:
(1)格式:[public] default 方法名称(参数列表){方法体}
注意:默认方法被实现类继承,可以由实现类的对象直接调用,也可以在实现类中覆盖重写
(2)格式:[public] static 返回值类型 方法名(参数列表){方法体}
注意:静态方法只能通过接口名.方法调用,不能通过实现类对象调用
4.从java9开始,接口中允许定义私有方法:
(1)普通私有方法:private 返回值类型 方法名称(参数列表){方法体}
(2)静态私有方法:private static 返回值类型 方法名称(参数列表){方法体}
注意:private方法只有接口自己能使用,不能被外部调用

---------------------------------------------------------------------------------------------------------------------------------

二、代码部分

PS:一些知识点放在了代码段的注释里:

接口一:

package com.Coding.JavaSE.Demo2;

public interface MyInterfaceAbstract {
    //抽象方法的定义
    public abstract void methodAbs1();
    public void methodAbs2();
    abstract void methodAbs3();
    void methodAbs4();
    //对于方法三要素:返回值、方法名、参数列表 的选取可根据具体情况来定
    //但对于关键字只能为 public abstract,可以选择性省略

    //默认方法的定义
    public default void methodDefault(){
        System.out.println("接口中的静态方法!");
    }

    //静态方法的定义
    public static void methodStatic(){
        System.out.println("接口中的静态方法!");

    //私有方法的定义 因为java9才能使用,但此时我使用的是java8 所以这部分只能注释起来

    }
}

接口二:(为了实现多个接口)

package com.Coding.JavaSE.Demo2;

public interface MyInterfaceAbstract01 {
    //定义一个常量
    public static final int NUMBER = 99;

    //定义一个抽象方法
    public abstract void happyNess();

}

实现类:

package com.Coding.JavaSE.Demo2;


import com.sun.javaws.IconUtil;


public class DemoInterface implements MyInterfaceAbstract, MyInterfaceAbstract01{

    @Override
    public void methodAbs1() {
        System.out.println("小艺小艺,XX是谁儿子?");
    }

    @Override
    public void methodAbs2() {
        System.out.println("亲爱的主人,XX是您儿子呀!");
    }

    @Override
    public void methodAbs3() {
        System.out.println("小艺小艺,那他的外号叫什么?");
    }

    @Override
    public void methodAbs4() {
        System.out.println("嘿嘿,是狗ji呀!");
    }
    @Override
    public void happyNess() {
        System.out.println("第二个接口的抽象方法!");
    }


    public static void main(String[] args) {
        //创建实现类的对象
        DemoInterface imp = new DemoInterface();
        //调用覆盖后的方法
        imp.methodAbs1();
        imp.methodAbs2();
        imp.methodAbs3();
        imp.methodAbs4();

        imp.happyNess();
        //调用接口中的默认方法
        imp.methodDefault();
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zaji/5590502.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-15
下一篇2022-12-14

发表评论

登录后才能评论

评论列表(0条)

    保存