【Java】接口和抽象类

一、接口 

        接口是多个类的公共规范,是一种引用数据类型。

//定义格式:
public interface 接口名称{
    接口内容
}

        接口中包含的内容:

1、成员变量。其实就是常量       格式如下:

[public] [static] [final]数据类型  常量名称=数据值。

     常量必须进行赋值,而且在赋值之后不能被改变,常量的名称必须用大写而且用下划线进行分割。

2、抽象方法。接口中组重要的部分。      格式如下:

[public][abstract] 返回值类型 方法名称(参数列表);

    实现类必须覆盖重写接口所有的抽象方法,除非实现类是抽象类。

3、Java8开始,接口允许定义默认方法。        格式如下:

[public] default 返回值类型   方法名称(参数列表){
    方法体
}

     默认方法也可以覆盖重写

4、Java8开始,接口允许定义静态方法,        格式如下:

[pulbic] static 返回值类型 方法名称(参数列表){
    方法体
}

     通过接口名称进行调用,不能通过实现类对象调用接口静态方法。

5、Java9开始,接口允许定义私有方法     格式如下:

//普通私有方法
private 返回值类型  方法名称(参数列表){
    方法体
}

//静态私有方法
private static 返回值类型  方法名称(参数列表){
    方法体
}

      private的方法只有接口自己才能使用,不能被实现类或别人使用。

        使用接口的注意事项:

1)、接口是没有静态代码块或者构造方法的

2)、一个类的直接父类是唯一的,但是一个类可以同时实现多个接口

3)、如果实现类所有的多个接口当中,存在重复的抽象方法,只需要覆盖重写一次即可

4)、如果实现类没有覆盖重写所有接口当中的抽象方法,那么这个类必须是一个抽象类

5)、如果实现类所实现的所有接口当中,存在重复的默认方法,那么实现类一定要对冲突的默认方法进行覆盖重写

6)、一个类如果直接父类当中的方法和接口当中的方法产生了冲突,优先用父类当中的方法

二、抽象类

*抽象方法,就是普通加上abstract关键字,然后去掉大括号,直接分号结束
abstract ovid method();
 
*抽象类:抽象方法所在的类必须是抽象类

注意事项:

1、抽象类使用abstract修饰;

2、抽象类不能实例化,即不能使用new关键字来实例化对象;

3、含有抽象方法(使用abstract关键字修饰的方法)的类是抽象类,必须使用abstract关键字修饰;

4、抽象类可以含有抽象方法,也可以不包含抽象方法,抽象类中可以有具体的方法;

5、如果一个子类实现了父类(抽象类)的所有抽象方法,那么该子类可以不必是抽象类,否则就是抽象类;

6、抽象类中的抽象方法只有方法体,没有具体实现;

      

参考链接:https://www.jianshu.com/p/c4f023d02f0c

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章