java之抽象类介绍

Posted 海棠--依旧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java之抽象类介绍相关的知识,希望对你有一定的参考价值。

什么抽象类

  抽象类是相同概念实体的一种抽象,也就是规范对象是什么。Java中用关键字abstract来定义抽象类和抽象方法。

抽象类和抽象方法的关系及特点

  • 抽象类和抽象方法必须用abstract关键字来修饰,抽象方法没有方法体,即不能有{};
  • 抽象类中不一定要有抽象方法,即也可以都是非抽象方法或两者并存,但是拥有抽象方法的类一定要定义为抽象类;
  • 抽象类不能被实例化,但是抽象类依然有构造方法,抽象类的构造方法用于子类访问父类数据的初始化。
  • 抽象类的子类可以是抽象类,但如果不是抽象类,必须重写抽象类中定义的所有抽象方法。
  • 抽象类不能用final修饰,因为被final修改不能被继承,而抽象类是一定要被继承的,因为抽象类是不能被示例化的
  • 成员变量:可以为常量(例如final修饰的常量),也可以为变量;
  • 静态成员变量:可以有,可以被继承,但是不会被重写
  • 成员方法:可以是抽象的成员方法(子类必须要实现重写的),也可以是非抽象的成员方法
  • 静态成员方法:抽象类中可以有静态成员方法,可以被继承但不能被子类重写

 

抽象关键字abstract和其他关键字的冲突关系

 

  • 不能和private一起使用:private修饰的方法不被继承,而抽象的方法必须要继承,所以会冲突报错。
  • 和static一起使用无意义:static修饰的方法可以通过类名去访问,而抽象的方法没有实现方法体,所以无意义。
  • 不能和final一起使用:final修饰的方法不被重写,而抽象的方法必须被非抽象子类重写,所以会报错

 

抽象类和普通类的区别

 

抽象类和接口的区别

  简单的说,接口是对动作的抽象,表示的是对象能做什么;抽象类是对根源的抽象,表示的是属于哪个种类。比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人。说明,他们都是人。人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它.

  • 抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。
  • 抽象类要被子类继承,接口要被类实现。
  • 接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现
  • 接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。
  • 抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,一个实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。
  • 抽象方法只能申明,不能实现,接口是设计的结果 ,抽象类是重构的结果
  • 抽象类里可以没有抽象方法
  • 如果一个类里有抽象方法,那么这个类只能是抽象类
  • 抽象方法要被实现,所以不能是静态的,也不能是私有的。
  • 接口可继承接口,并可多继承接口,但类只能单根继承。

 

以上是关于java之抽象类介绍的主要内容,如果未能解决你的问题,请参考以下文章

java基础之十三:Abstract类和方法

java之接口与抽象类和具体类之间的区别与联系

java之抽象类精选

java基础()之抽象类和抽象函数

Java面向对象之抽象类,接口

Java面向对象之抽象类