在Java里什么是抽象类_Java面向对象设计概念解析-java教程

抽象类用于定义模板和强制子类实现,须用abstract声明;含抽象方法或本身被abstract修饰则不可实例化;子类必须实现所有抽象方法或声明为abstract;与接口相比,抽象类支持构造器、成员变量和普通方法,适用于is-a关系和状态共享。

抽象类不是用来直接创建对象的,而是为子类提供统一模板和强制约束。

抽象类必须用 abstract 关键字声明

Java 要求只要类中包含至少一个抽象方法(没有方法体的方法),这个类就必须被声明为 abstract;反过来,即使类里没有抽象方法,也可以用 abstract 声明——这种类不能被实例化,只用于被继承。

  • abstract 类可以有构造方法,但只能被子类调用(通过 super()),不能直接 new
  • 抽象方法不能是 private、static 或 final——否则违背“强制子类实现”的设计意图
  • 抽象类可以包含普通方法、字段、静态块、构造器,甚至 main 方法(可运行,但不能 new 实例)

子类继承抽象类必须实现所有抽象方法

除非子类自己也声明为 abstract。这是编译器强制检查的,不满足会报错:error: class X must either be declared abstract or implement abstract method Y in Z。

  • 实现时方法签名(名称、参数、返回类型)必须完全一致,访问修饰符不能比父类更严格(比如父类是 protected,子类不能写 private)
  • 抽象类的抽象方法可以被 public、protected 修饰,但不能是包私有(缺省)+ 子类在不同包时无法访问,导致无法实现
  • 如果父类抽象方法是 public,子类实现时最好也显式写 public,避免因默认包访问权限引发意外编译失败

抽象类 vs 接口:关键区别在设计意图和能力边界

抽象类强调“是什么”(is-a 关系),接口强调“能做什么”(can-do)。Java 8 后接口也能有默认方法和静态方法,但仍有不可逾越的限制:

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » 在Java里什么是抽象类_Java面向对象设计概念解析-java教程
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1393+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4030358+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1393+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4030358+
  • 本周更新: 0+
  • 最后更新: 2026-03-16