首页
文章列表
标签墙
返回找工具啦
面向对象
共 25 篇文章
Go语言为什么没有泛型继承?接口组合的设计哲学
2026-05-04 15:18:26
Go语言为什么没有泛型继承?接口组合的设计哲学 Go语言刻意避开了传统面向对象语言中复杂的类型继承体系,转而推崇组合。即使Go 1.18引入了泛型,它依然没有引入类似Java或C那样的“泛型类继承”。理解这一设计哲学,关键在于区分“类型继承”与“接口组合”的本质区别。 理解“组合优于继承”的数学逻辑
Go语言
泛型
接口组合
12
0
Python __init__和__new__的区别:什么时候需要重写__new__
2026-04-29 19:23:41
Python 中 init 和 new 的区别常常让初学者感到困惑。简单来说,new 负责对象的创建(构造),而 init 负责对象的初始化。理解这两者的分工是掌握 Python 类机制的关键。 1. 理解对象创建的生命周期 在 Python 中,当你调用一个类(例如 MyClass)来实例化对象时
Python
面向对象
__init__
31
0
Python __repr__与__str__方法在调试信息中的区别
2026-04-27 13:28:09
Python repr与str方法在调试信息中的区别 在 Python 调试过程中,直接打印自定义对象往往只能看到内存地址(如 <main.Point object at 0x7f...),这对排查问题毫无帮助。为了获得可读的信息,必须重写 str 和 repr 方法。这两者虽然都是将对象转换为字符
Python
__str__
__repr__
32
0
Python abc模块定义抽象基类强制子类实现方法
2026-04-23 00:15:34
Python abc模块定义抽象基类强制子类实现方法 Python 的 abc 模块提供了一种机制,用于定义抽象基类。这就像是一个强制性的合同:父类规定某些方法必须存在,但自己不负责具体实现;任何子类如果不签字履行(实现这些方法),Python 就会拒绝其创建对象。这种机制在大型项目开发中能有效防止
Python
abc模块
抽象基类
43
0
Lua 面向对象:基于表的实现
2026-04-16 21:28:19
Lua 面向对象:基于表的实现 Lua 本身没有内置“类”的概念,但它的表极其灵活,完全能够模拟出面向对象编程中的类、对象、继承等特性。通过巧妙利用元表和 index 机制,我们可以构建一套完整的面向对象系统。 1. 定义基础对象结构 在 Lua 中,对象本质上就是一个“键值对”的集合,也就是一个表
Lua
面向对象
元表
38
0
Java 接口实现:implements 关键字
2026-04-15 07:22:37
Java 接口实现:implements 关键字 Java 接口定义了一组规则,而 implements 关键字则是类遵守这些规则的承诺。当你在类定义中使用 implements 时,必须实现接口中声明的所有方法,除非该类被声明为抽象类。这种机制让 Java 能够实现“多重继承”的效果,并保证不同类
Java
接口
Java基础
38
0
C++ 运算符重载:自定义类型的运算操作
2026-04-14 09:27:17
C++ 运算符重载:自定义类型的运算操作 1. 什么是C++运算符重载 理解运算符重载是C++中的一个强大特性,允许为自定义类型(类或结构体)重新定义运算符的行为。通过运算符重载,我们可以使自定义类型的对象像基本数据类型一样使用熟悉的运算符进行操作。 检查运算符重载的本质是通过特殊函数实现的,这些函
C++
运算符重载
自定义类型
60
0
Go 结构体:struct 与方法
2026-04-12 06:15:13
Go 结构体:struct 与方法 Go 语言没有类,但结构体承担了面向对象编程中“类”的核心职责。结构体将不同类型的数据组合在一起,而方法则是定义在这些数据上的行为。掌握这两者是编写 Go 程序的基础。 1. 定义与初始化结构体 结构体是自定义数据类型的集合。你需要先定义类型,再创建实例。 定义一
Go语言
结构体
方法
55
0
TypeScript 类:public、private、protected 修饰符
2026-04-11 18:20:50
TypeScript 类:public、private、protected 修饰符 TypeScript 提供了三种访问修饰符,用于控制类成员(属性和方法)的可访问性。合理使用这些修饰符,可以封装内部逻辑,保护数据安全,并定义清晰的对外接口。 1. Public 修饰符:完全开放 public 是
TypeScript
访问修饰符
面向对象
50
0
JavaScript原型链继承与类式继承的内存结构对比
2026-04-11 08:24:08
JavaScript原型链继承与类式继承的内存结构对比 JavaScript 中实现继承的核心在于如何利用内存中的原型链与构造函数。两种最基础的模式分别是“原型链继承”和“类式继承(借用构造函数)”。它们在内存中的存储方式、属性查找机制以及数据共享策略上存在本质区别。 一、 原型链继承 原型链继承的
JS
原型链
继承
63
0
C++ 虚继承解决菱形继承问题
2026-04-09 04:20:46
C++ 虚继承解决菱形继承问题 在 C++ 面向对象编程中,当一个派生类同时继承了两个基类,而这两个基类又共同继承自同一个父类时,会形成菱形继承结构。这种结构会导致数据冗余和访问二义性。虚继承(Virtual Inheritance)是专门为解决此问题设计的机制。 1. 识别菱形继承问题 菱形继承是
C++
虚继承
菱形继承
45
0
C++ 类与对象:class 定义与实例化
2026-04-08 18:22:11
C++ 类与对象:class 定义与实例化 C++ 中的“类”就像是制作产品的“模具”或“蓝图”,而“对象”则是根据这个模具生产出来的具体“产品”。理解类与对象,是掌握 C++ 面向对象编程的第一步。 1. 定义一个类 定义类就是告诉计算机这个“模具”长什么样。它包含两部分:属性(数据)和方法(行为
C++
面向对象
类定义
59
0
Dart 类与继承:extends 与 implements
2026-04-06 23:46:09
Dart 类与继承:extends 与 implements 在 Dart 语言中,处理类与类的关系时,最常遇到两个关键字:extends(继承)和 implements(实现)。它们决定了你的代码如何复用、如何扩展。下面直接拆解使用场景与具体步骤。 extends 用于复用父类的具体实现。子类自动
Dart语言
面向对象
类与继承
61
0
C++ 多态:虚函数与纯虚函数的实现
2026-04-06 19:21:22
C++ 多态:虚函数与纯虚函数的实现 阶段一:实现基础多态(虚函数) 多态的核心逻辑是“统一指令,差异化执行”。通过虚函数,基类指针或引用在调用函数时,会跳过基类默认代码,直接执行指针实际指向的派生类代码。 1. 声明 虚函数原型。在基类头文件(如 Shape.h)的 public: 区域,编写普通
C++编程
面向对象
多态机制
52
0
Lua 元表:metatable 与 __index
2026-04-06 16:42:46
Lua 元表:metatable 与 index Lua 的表本质上是键值对的集合。通过元表,可以改变表的默认行为,实现类似于面向对象编程中的操作符重载、继承等特性。核心在于理解 metatable 的设置与 index 的查找逻辑。 1. 设置与读取元表 元表本质上也是一个普通的表。通过特定的函数
Lua
元表
__index
54
0
Python 文件系统:pathlib 模块的使用
2026-04-06 13:42:44
Python 的 os.path 模块虽然经典,但处理路径时字符串拼接的繁琐和跨平台兼容性问题常让人头疼。pathlib 模块采用面向对象的设计,将路径视为对象而非字符串,让代码更简洁、更安全。以下是使用 pathlib 高效管理文件系统的实操指南。 一、创建与解析路径对象 pathlib 的核心是
Python
pathlib
文件系统
59
0
Go 接口实现:隐式实现与接口组合
2026-04-06 03:12:49
Go 接口实现:隐式实现与接口组合 接口是 Go 语言最核心的特性之一,它提供了一种定义行为契约的方式。与 Java、C++ 等语言不同,Go 采用了隐式实现的机制——你不需要显式声明某个类型实现了某个接口,只要类型的方法集满足接口的要求,编译器就会自动建立关联。这种设计让代码更加灵活,模块间耦合度
Go接口
隐式实现
接口组合
56
0
Scala 单例对象:object 关键字
2026-04-05 07:25:48
Scala 单例对象:object 关键字 Scala 是一门融合了面向对象和函数式编程范式的语言。在 Scala 中,object 关键字用于定义单例对象——在整个应用程序中仅有唯一实例的类。这是 Scala 替代 Java 静态成员的核心机制,也是 Scala 程序组织的基石之一。 1. 理解单
Scala
单例对象
object关键字
53
0
Scala 特质:trait 与混入
2026-04-05 00:30:45
Scala 特质:trait 与混入 特质(trait)是Scala中最为强大的特性之一,它既可以像Java接口那样定义方法签名,也可以像抽象类那样包含具体实现。通过特质,你可以实现代码的横向复用,让不同类之间共享相同的行为逻辑。理解特质的运作机制,是掌握Scala面向对象编程的关键一步。 什么是特
Scala
特质
混入
52
0
Ruby 面向对象:class 定义与方法调用
2026-04-03 20:34:20
Ruby 面向对象:class 定义与方法调用 创建一个类,这是 Ruby 面向对象编程的起点。在 Ruby 中,使用 class 关键字定义类,类名必须以大写字母开头。 ruby class Person end 上面的代码定义了一个名为 Person 的空类。虽然它现在什么也不做,但已经是一个合
Ruby
面向对象
类定义
51
0
1
2
下一页