当前位置: 首页 > news >正文

佛山网站建设永网廊坊网站群发关键词

佛山网站建设永网,廊坊网站群发关键词,wordpress主题范例,个人博客网站建设方案抽象类与普通类的核心区别 特性抽象类(Abstract Class)普通类(Concrete Class)实例化❌ 不能直接实例化✅ 可以直接实例化抽象方法✅ 可以包含抽象方法(无实现)❌ 所有方法必须实现构造方法✅ 可以定义构造…

抽象类与普通类的核心区别

特性抽象类(Abstract Class)普通类(Concrete Class)
实例化❌ 不能直接实例化✅ 可以直接实例化
抽象方法✅ 可以包含抽象方法(无实现)❌ 所有方法必须实现
构造方法✅ 可以定义构造方法(供子类调用)✅ 必须定义构造方法(用于实例化)
设计目的定义模板,规范子类行为(代码复用 + 多态)具体实现功能(直接使用)
继承关系必须被继承才有意义可独立使用,也可被继承
方法实现可混合抽象方法和具体方法所有方法必须完全实现

具体场景与代码示例

场景 1:动物行为建模

抽象类定义模板

// 抽象类:定义动物通用行为
abstract class Animal {private String name;public Animal(String name) { // 抽象类可以有构造方法this.name = name;}public void eat() { // 具体方法(已实现)System.out.println(name + "正在吃东西");}public abstract void makeSound(); // 抽象方法(无实现)
}// 子类必须实现抽象方法
class Dog extends Animal {public Dog(String name) {super(name);}@Overridepublic void makeSound() { // 实现抽象方法System.out.println("汪汪!");}
}

普通类直接使用

class Car {private String model;public Car(String model) {this.model = model;}public void start() { // 完全实现的方法System.out.println(model + "启动了");}
}// 直接实例化
Car myCar = new Car("Toyota");
myCar.start();

使用场景对比

场景适用类型理由
定义通用模板(如支付流程)抽象类规范子类必须实现的方法(如 pay()
实现具体功能(如文件操作)普通类无需扩展,直接完成具体逻辑
部分方法复用(如日志记录)抽象类提供公共方法 + 抽象方法混合实现
独立功能模块(如工具类)普通类自包含功能,无需继承

设计原则与注意事项

1. 抽象类的核心作用
  • 强制规范:要求子类必须实现关键方法
  • 代码复用:通过公共方法减少重复代码
  • 多态支持:统一通过父类引用操作不同子类对象
2. 何时选择普通类?
  • 功能完整无需扩展
  • 需要直接创建对象
  • 作为工具类或辅助类
3. 典型错误
// 错误:尝试实例化抽象类
Animal animal = new Animal("未知"); // 编译错误!// 正确:通过子类实例化
Animal myDog = new Dog("小黑");
myDog.makeSound(); // 输出 "汪汪!"

扩展:抽象类 vs 接口

对比维度抽象类接口
方法实现可包含具体方法Java 8+ 前只能有抽象方法
多继承❌ 单继承✅ 多实现
状态维护✅ 可以有成员变量❌ 只能有静态常量
设计理念“是什么”(is-a 关系)“能做什么”(can-do 关系)

总结

  • 抽象类:是 模板设计工具,强调代码复用和规范,适用于有层次关系的类体系。
  • 普通类:是 功能实现单元,直接完成具体任务,适用于独立功能模块。

黄金法则

  • 若多个类有 共同行为实现不同 → 用抽象类
  • 若类需要 直接使用功能完整 → 用普通类
http://www.dtcms.com/a/415188.html

相关文章:

  • php网站支付宝接口百度推广天津总代理
  • LNMP环境配置指南(Linux, Nginx, MySQL, PHP)
  • Apache Superset 企业级实战:从部署到优化的全链路指南
  • 【从零构建LLM】第一章,embeddbing构建思路总结
  • 青岛网站建设公司正不拦截网站的浏览器
  • 在不插网线的情况下实现宿主机和VMware虚拟机的双向通信(如使用vscode通过ssh进行远程开发)
  • 电脑网站设计公司新闻式软文经典案例
  • 北京公司网站建设推荐厦门网站建设xm37
  • 从文件上传到FastDFS小文件优化
  • 解码编程语言:穿越技术迷宫的指南【1】
  • 一般网站建设收费几年合同简约大气的ppt模板免费下载
  • 【Envi遥感图像处理】017:如何通过立体相对提取DEM?
  • 网站推广排名报价微网站 开发
  • 邦邻营销型网站建设做网站大概
  • 都匀网站制作网络推广策划案
  • 鸿蒙:使用AppStorageV2实现跨Ability共享
  • HarmonyOS SDK地图服务教程
  • C++:(四)类和对象(中)—— 构造、析构与重载
  • 鸿蒙系统权限分级提示设计:兼顾功能需求与用户选择权
  • 【sqllite3】Read error: SQLITE_BUSY: database is locked
  • 做网站建设需要做哪些工作室什么平台可以打广告做宣传
  • Python爬虫实战:获取金价查询网最新金价行情与数据分析
  • 长春网站建设seo推广方式方法
  • 【MySQL✨】MySQL 入门之旅 · 第八篇:数据排序与分组
  • deepseek Kotlin Flow 全面详解
  • MTK-Android13-Dialer 通话界面定制修改
  • 化妆品电子商务网站开发流程描述中山网站建设推荐
  • 宿州移动网站建设广州模板网站
  • 旅游景区网站建设哈尔滨发布信息的网站
  • RVC WebUI(Retrieval-based-Voice-Conversion-WebUI)配置