抽象类

定义:

  抽象类和抽象方法必须要用abstract修饰

抽象类的特点

  1.抽象类和抽象方法必须用abstract关键字修饰

  2.抽象类中不一定有抽象方法,但有抽象方法的类必须是抽象类

  3.抽象类不能实例化、因为它不是具体的。

  4.抽象类有构造方法,但不能实例化,构造方法有何用?

    用于子类访问父类数据的初始化

  5.抽象的子类

    抽象类的子类如果不想重写抽象方法,该子类是一个抽象类

    如果重写所有的抽象方法,子类是个具体类

抽象类的成员特点:

    成员变量:可以是变量 也可以是常量

    构造方法:有,用于子类访问父类数据的初始化

    成员方法:既可以抽象 也可非抽象,抽象方法是强制要求子类做的事情,非抽象方法时子类继承的事情,提高代码复用性。

几个问题:

一个类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义?

  可以,不让创建对象

abstract不能和哪些关键字共存

  private ::因为一个abstract方法需要被重写,所以不能修饰为private;

  final:因为一个abstract方法需要被重写。被final修饰的方法是不能被重写的,所以不能同final共存;

  static :因为一个abstract方法没有方法体。静态方法需要对方法体执行内容分配空间,所以不能同static共存;

      毕老师说如果static可以修饰抽象方法,那么连对象都省了,直接类名调用就可以了。
                可是抽象方法运行没意义。

  synchronized: 是同步的,然而同步需要具体的操作才能同步,但, abstract是只有声明没有实现的(即,使用synchronized关键字的是需要有具体的实现同步的操作的,但是使用abstract是只有声明而没有实现的,这样就产生了冲突)

 native:他们本身的定义就是冲突的,native声明的方法是移交本地操作系统实现的,而abstract是移交子类对象实现的,同时修饰的话,导致不知道谁实现声明的方法
原文地址:https://www.cnblogs.com/jiangjianzhu/p/5773343.html