Java面向对象学习笔记 -- 5(抽象类、接口)


 

1. 抽象类java

    抽象就是将拥有共同方法和属性的对象提取出来,提取后,从新设计一个更加通用、更加大众化的类,就叫抽象类。编程

    1)抽象方法:由abstract修饰,只有方法的定义,没有方法的实现;ide

    2)包含抽象方法的类必须是抽象类;spa

    3)抽象类:由abstract修饰,不能被实例化,能够包含抽象方法和非抽象方法;设计

    4)抽象类都是须要被继承的,子类继承后再实现如下操做:对象

        4.1)子类中重写父类的抽象方法继承

        4.2)子类也声明为抽象类接口

    5)抽象类的意义:it

        5.1)封装子类共有的变量和方法--代码的重用class

        5.2)为子类提供一种公共的类型--向上造型

        5.3)定义抽象方法,子类重写它,为子类提供一个公共的入口


2. 接口

    1)制定一个标准、规范

    2)只要遵照了标准,就能作某件事

    3)由interface定义

            接口中只能包含常量和抽象方法--数据默认为常量(public static final),

            方法默认为抽象的(public abstract) 

    4)接口不能被实例化

    5)接口须要被实现的,子类实现接口, 必须重写接口中的全部抽象方法 

    6)一个类能够实现多个接口, 又继承类,又实现接口时,需先继承再实现 

    7)接口之间能够继承(extends)


3. 抽象类和接口的区别

    ① 从语法角度:abstract class方法中能够有本身的数据成员,也能够有非abstract的成员方法,并赋予方法的默认行为,而在interface方式中通常不定义成员数据变量,全部的方法都是abstract,方法不能拥有默认的行为。

    ② 从编程的角度:abstract class在java语言中表示的是一种继承关系,一个类只能使用一次继承关系。而一个类能够实现多个interface。 

    ③ 从问题域角度:abstract class在Java语言中体现了一种继承关系,要想使得继承关系合理,父类和派生类之间必须存在"is a"关系,即父类和派生类在概念本质上应该是相同的。对于interface 来讲则否则,并不要求interface的实现者和interface定义在概念本质上是一致的,仅仅是实现了interface定义的契约而已。

    详细区别:

    1.抽象类能够有构造方法,接口中不能有构造方法。

    2.抽象类中能够有普通成员变量,接口中没有普通成员变量

    3.抽象类中能够包含非抽象的普通方法,接口中的全部方法必须都是抽象的,不能有非抽象的普通方法。

    4.抽象类中的抽象方法的访问类型能够是public,protected,但接口中的抽象方法只能是public类型的,而且默认即为public abstract类型。

    5.抽象类中能够包含静态方法,接口中不能包含静态方法

    6.抽象类和接口中均可以包含静态成员变量,抽象类中的静态成员变量的访问类型能够任意,但接口中定义的变量只能是public static final类型。

    7. 一个类能够实现多个接口,但只能继承一个抽象类。

相关文章
相关标签/搜索