Java学习笔记之接口和抽象类

前言

最近遇到了接口和抽象类的使用,搞不明白二者的区别,所以特地研究了下,笔记如下。


接口和抽象类的定义

抽象类:包含抽象方法的一个类叫做“抽象类”。
接口:可将其想象成为一个“纯”抽象类,它只声明类方法,不提供方法的实现细节。

接口和抽象类的特点

抽象类:
1.如果一个类A继承了抽象类B,并且没有实现抽线类B中的抽象方法,则类A也会是抽象的。
2.如果一个类A继承了抽象类B,并且程序员想生成类A的一个对象,则必须事项抽象类B中的所有抽象方法。
3.抽象类中可以包含有非抽象方法。
4.可以有数据成员。
5.抽象类和抽象类中的抽象方法都要加上abstract关键字。
接口:
1.接口包含了基本数据类型的数据成员,它们都默认为static和final。
2.接口只是提供一种形式,不提供具体的实现细节。
3.创建一个接口,要使用interface关键字,而不是class。
4.假如类A要实现接口B,要使用implements关键字,而不是用extend关键字。
5.接口可用于多重继承(一个类可实现多个接口)。
6.可以用关键字extend继承接口A,从而得到一个新的接口B,也就是说一个接口可以继承另一个接口。
7.接口中的字段因为默认是static和final,所以它们不是接口的一部分,而是保存于那个接口的static存储区域中。
8.接口中的方法默认为public属性。当实现一个接口时,来自接口的方法必须定义为public,否则它们会默认为“友好的”,会限制我们在继承过程中对一个方法的访问。

接口与抽象类的本质区别

抽象类是对事物本质的抽象(这点跟普通类一样),而接口是对方法(行为)的抽象。

接口与抽象类的例子

抽象类:
abstract class A {
    int i; //可以含有数据字段
    public abstract void fun1(); //抽象方法,只含有声明,没有实现
    public void fun2() { return "A"; }
}

接口:
interface A {
    int SIZE = 10; // static&&final 
    void fun(); // 访问权限自动获得为public。
}

猜你喜欢

转载自blog.csdn.net/LYH66/article/details/40191421