
























小白我的理解
> C#允许 A b = new B()是否还有其他深意?
如#3 所说,是更细一级的概念。我问了下 ChatGPT ,它告诉我:
在 C#中,当我们使用 object 或 IExtensionManager 来声明一个变量时,该变量将被视为对象的基类,因此只能调用基类中定义的方法和属性。而无法直接调用派生类中特有的方法和属性。
至于深意,ChatGPT 的回答是:
1. 多态性:通过将变量声明为基类类型,我们可以在运行时将其赋值为不同的派生类的实例。这样做的好处是,可以使用相同代码来处理不同类型的对象,实现代码的可扩展性和灵活性。通过多态性,可以通过基类类型的变量来处理不同派生类的对象,提高代码的可重用性和可维护性。
2. 封装性:将变量声明为基类类型有助于实现封装性,即隐藏派生类的具体实现细节。将对象的具体类型和实现细节封装起来,而只暴露基类的公共接口。这样做可以实现代码的模块化和解耦,提高代码的可维护性和可扩展性。
> c#中有 A 类 类型的变量 b 这种概念,在 Matlab 中 b 就是对象。不会叫作变量。我不知道这是翻译习惯的问题?还是二者概念确实不同?
我的理解是首先变量的定义是在高级程序设计语言允许使用描述性的名字指向主存储器中的位置,而不必再使用数字地址,这样的名字称为变量。那么,一般的变量指的都是基本数据类型,比如整型、布尔型、字符型等。但是,教科书也提到像 GIF 、JPEG 和 HTML 这样的类型可能也要像整型和浮点型一样通用。而面向对象范型使程序员可以在一门程序设计语言提供的的原语类型的基础之上扩展可用数据类型的指令系统,这种能力是面向对象范型的一个著名的特征,所以这不是翻译习惯,就是变量,只是声明的一个类类型的变量。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。