(学习笔记)抽象类和接口

来源:互联网 发布:喜马拉雅听书 知乎 编辑:程序博客网 时间:2024/06/04 18:01

     最近准备校招,所以复习的时候想来记录一下学习的内容。


首先聊聊接口类吧:


(1).抽象类的含义

   包含抽象方法的类叫做抽象类。如果一个类包括一个或者多个抽象方法,该类必须被限定为抽象方法。


(2)抽象类的知识点

1.含有abstract修饰符的class即为抽象类,abstract类不能创建实例对象

2. 含有abstract方法的类必须定义为 abstract class,而abstract class中的方法不必全是抽象的。

3.abstract class类中定义抽象方法必须在具体子类中实现,所以,不能有抽象的构造方法或者抽象静态方法。

4.如果子类没有实现抽象父类中的所有抽象方法,那么子类也必须定位为abstract类型。


2。接口(interface)

(1)接口的含义

可以说是抽象类的一种特例,接口中的所有方法都必须是抽象的。能有的内容是:static final 的静态成员变量,public abstract 的抽象方法(可以使用abstract关键字也可以不使用)

(2)接口的知识点

1.接口中的域隐式地是static和final的

2.接口可以嵌套多重继承的途径

3.接口是实现多重继承的途径

4.接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final。

5.接口不能有构造器

6.接口中不能有main()的方法。


3.语法上的区别

1.普通成员变量:抽象类中可以有普通成员变量、接口中没有普通成员变量(static final 变量)

2.方法:抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。

3.静态成员变量:抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认是

public static final类型。

4.静态方法:抽象类中可以包含静态方法,但不能是抽线静态方法,接口中不能包含静态方法。

5.构造方法(静态方法)抽线类可以有构造方法,接口中不能有构造方法

6方法访问权限:抽像类中的抽线方法的访问类型可以是public 、protected和默认类型,但接口中的抽象方法只能是public类型的,并且默认是public static类型。

7.子类实现和继承:一个类可以实现多个接口,但只能继承一个抽象类。

8.初始化过程:当一个类在初始化化时,要求其父类全部实现初始化了,但是一个接口在初始化时,并不要求其父类接口全部实现初始化吗,只有在真正使用父类的时候(

如引用接口中定义的常量),才会初始化。



4.应用上的区别:

    接口上更多的是在系统架构上设计方法发挥作用。主要作用在定义模块之间的通信契约。

而抽象类在代码实现上发挥作用,可以实现代码的重用。


5.使用接口的原因:

1)为了能够向上转型为多个基类型

2)与使用抽象基类相同相同,防止客户端程序员创建该类的对象,并确保这仅仅是建立一个接口。



抽象类是为了代码复用,接口是为了多态性。