zoukankan      html  css  js  c++  java
  • Java 抽象类的理解

    1. 基本概念

    用abstract修饰的类是抽象类。如果类中有方法是abstract类型的,那么此类肯定是abstract类型的,也就是说此类的修饰符肯定有abstract(也就是说,有抽象方法的类是抽象类)。抽象类是不完整的,只能作为基类,且不能够实例化。

    2. 与类进行比较

    抽象类不能够实例化,并且对抽象类直接使用new运算符会导致编译错误。

    允许抽象类中包含抽象方法或者变量。

    抽象类不能是private的。

    3. 和接口比较

    不同点:

      抽象类能够有实现了的方法,接口不能有。

      类可以实现无数个接口,但只能继承一个抽象类(或者其他类),抽象类派生的类扔可以实现接口,从而得出接口是用来解决多重继承的问题的。

      抽象类当中可以存在非抽象的方法,可接口不能,且它里面的方法只是一个声明必须用public来修饰没有具体实现的方法。

      抽象类中的成员变量可以被不同的修饰符来修饰,可接口中的成员变量默认的都是静态常量(static final)。

      抽象类是对象的抽象,然而接口是一种行为规范。

    相似点:

      都不能实例化。

      都可以包含未实现的方法声明。

      派生类必须实现未实现的方法,其中抽象类是抽象方法,接口是所有成员。  

    Tip:
    1. implements的声明的方法里面不能使用private来修饰方法。 
    2. abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。
    3. 实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。
    4. 接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。
    5. 接口中的方法默认都是 public,abstract 类型的
    6. 接口可以继承接口(使用extends语句);抽象类可以实现接口;抽象类可以继承实体类。抽象类不需要实现接口的全部方法。
    7. 很有意思的地方:抽象类继承接口,然后实体类继承抽象类,发现不需要实现最开始的接口定义的方法。于是乎,接口定义的方法,在实体类实现的时候成为了抽象方法的存在。不过根据Tip5可以得知,是这样的。
  • 相关阅读:
    POJ 2723 Get Luffy Out(2-SAT)
    ZOJ 3613 Wormhole Transport
    HDU 4085 Peach Blossom Spring
    NBUT 1221 Intermediary
    NBUT 1223 Friends number
    NBUT 1220 SPY
    NBUT 1218 You are my brother
    PAT 1131. Subway Map (30)
    ZSTU OJ 4273 玩具
    ZSTU OJ 4272 最佳淘汰算法
  • 原文地址:https://www.cnblogs.com/renhui/p/6066525.html
Copyright © 2011-2022 走看看