zoukankan      html  css  js  c++  java
  • 抽象类--笔记

    抽象类特点:

    ①方法只有声明没有实现时,该方法就是抽象方法,需要被abstract关键字修饰,抽象方法必须定义在抽象类中,该类也必须被abstract关键字修饰。
    ②抽象类不可以被实例化,因为调用抽象方法没意义,没有方法体。
    ③抽象类必须有其子类覆盖了所有的抽象方法后,该子类才可以实例化,否则,这个子类还是抽象类。


    既然我们前面说到抽象类不能被实例化。那么抽象类有构造函数么?答案是有的,这又是为什么呢?因为抽象类是必须被继承的,
    而抽象类的构造函数就是用来给子类对象进行初始化。


    还有就是抽象类可以不定义抽象方法吗?可以的,但是这种抽象类是很少见的,目的就是不让该类创建对象,

    根据抽象类的这些特点,那么我们来说说抽象abstract关键字不可以和哪些关键字共存呢?
    我们已经知道了,抽象类是必须被其他类继承的,类中的抽象方法也是必须被子类重写。
    ①那么abstract关键字和private关键字是不能共存的,因为抽象方法是要被子类中的方法覆盖重写,如果用private关键字修饰,而私有化后方法是不能被访问到的。
    ②还有就是static关键字也不能和abstract关键字共存,因为用static关键字修饰后的方法,就是静态方法,
      不用创建对象,可以直接用类名调用方法,而调用抽象方法就毫无意义了。
    abstract关键字和const、readonly关键字也不能在一起使用,因为被const和readonly关键字修饰的方法不能被覆盖,而抽象方法就是要被其子类中的方法覆盖。


    前面我们讲了那么多,那么抽象类和我们平时见的那些一般类有什么异同点呢?
    相同点:抽象类和一般类都是用来描述事物的,都在内部定义了成员。
    不同点:①一般类有足够的信息描述事物,而抽象类描述事物的信息就有可能不足,
               ②一般类中不能定义抽象方法,只能定义非抽象方法,而抽象类中可以定义抽象方法,同时也可以定义非抽象方法。
               ③一般类可以被实例化,抽象类不可以被实例化。


    抽象类一定是个父类吗?
    是的,因为抽象类需要子类覆盖其抽象方法后才可以对其子类进行初始化。

  • 相关阅读:
    Qt内存回收机制
    Qt坐标系统
    Qt信号与槽的使用
    Qt初始化代码基本说明
    Qt下载、安装及环境搭建
    搭建CentOs7的WebServer
    Laying out a webpage is easy with flex
    Let's write a framework.
    使用go语言开发一个后端gin框架的web项目
    个人总结的J2EE目前知道的涵盖面,从大方向入手,多写单元测试,加强基础
  • 原文地址:https://www.cnblogs.com/alsw/p/3440654.html
Copyright © 2011-2022 走看看