抽象类

抽象类
  ~在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类

  ~抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样

  ~由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类

  ~父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法

  ~在 Java 中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口

抽象函数/抽象类

  ~抽象函数-表达概念而无法实现具体代码的函数

  ~抽象类-表达概念而无法构造出实体的类

 

  ~带有abstract修饰符的函数

  ~有抽象函数的类一定是抽象类

  ~抽象类不能制造对象

  ~但是可以定义变量

    ~任何继承了抽象类的非抽象类的对象可以付给这个变量

实现抽象函数

  ~继承自抽象类的子类,必须覆盖父类中的抽象函数

  ~否则自己成为抽象类

两种抽象

  ~与具体相对

    ~表示一种概念而非实体

  ~与细节相对

    ~表示在一定程度上忽略细节而着眼大局

 

在 Java 语言中使用 abstract class 来定义抽象类 例:

  

 

 

   注意到该 Employee 类没有什么不同,尽管该类是抽象类,但是它仍然有 3 个成员变量,7 个成员方法和 1 个构造方法

  

 

   当你尝试编译 AbstractDemo 类时,会产生错误

抽象类总结

  • 1. 抽象类不能被实例化(初学者很容易犯的错),如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象

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

  • 3. 抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能

  • 4. 构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法

  • 5. 抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类

 

  

posted @   夫君  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示