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可以得知,是这样的。
  • 相关阅读:
    CF140C New Year Snowmen
    CF1131G Most Dangerous Shark
    莫比乌斯函数&欧拉函数&筛法 综合运用
    【51nod1220】约数之和
    题解[CF1228E Another Filling the Grid]
    dsu on tree学习笔记
    线性基学习笔记
    题解[CF895C Square Subsets]
    博弈论学习笔记
    题解[ [JSOI2007]文本生成器 ]
  • 原文地址:https://www.cnblogs.com/renhui/p/6066525.html
Copyright © 2011-2022 走看看