inheritance相关内容

C++ new[] 在数组访问时进入基类指针崩溃

当我分配一个对象时,这段代码可以正常工作.当我尝试添加数组语法时,它会出现段错误.为什么是这样?我的目标是向外界隐藏 c 类在内部使用 b 对象的事实.我已将程序发布到 codepad 供您使用. #include 使用命名空间标准;//文件 1甲级{上市:虚空 m() { }虚拟 ~a() { }};//文件 2b类:公共a{诠释 x;上市:void m() { cout ..
发布时间:2022-01-24 16:27:17 C/C++开发

多态性能做哪些继承不能做的事情?

假设我们有一个类 Animal,它扩展到其他三个类:Dog、Cat、Bird. 这个动物类有一个 talk() 和 move() 函数.talk 函数输出“Animal talk",move 函数输出“Animal Moving". 对于狗来说,这是“狗移动"和“狗吃".对于 Cat 和 Bird 类,这种差异是平行的“猫移动"等. 现在,由于多态性,如果我这样做了 动物 ch ..
发布时间:2022-01-24 16:26:05 Java开发

继承中的静态块 vs 初始​​化块 vs 构造函数

我找到了这个例子,我想了解它背后的逻辑?构造函数和静态块以及初始化块如何在继承中工作?分别在哪个阶段被调用? 公共类父{静止的 {System.out.println("我是家长 3");}{System.out.println("我是父母 2");}公共父(){System.out.println("我是父母 1");}}公共类儿子扩展父{静态 {System.out.println("我是儿 ..
发布时间:2022-01-24 16:24:01 Java开发

如果是父实例,instanceof 是否返回 true?

我有一个扩展 Parent 的类 Child. 父子 = new Child();如果(父实例的子实例){//做一点事} 这是返回真还是假,为什么? 解决方案 是,会的.为什么不呢? 因为 child 实际上是 Parent 的一个实例.如果您只想为孩子执行操作,则应检查 if (child instanceof Child){} 但是,您应该记住 Scott Meyers ..
发布时间:2022-01-24 16:21:17 Java开发

C#继承.从基类派生的类

我有一个基类 公共A类{公共字符串 s1;公共字符串 s2;} 我也有一个派生类: 公共类 B : A{公共字符串 s3;} 假设我的程序创建了一个类 A 的实例. A aClassInstance = new A(); 设置了一些参数: aClassInstance.s1 = "字符串 1";aClassInstance.s2 = "字符串 2"; 此时我想创建一个 B 类的实例 ..
发布时间:2022-01-24 16:20:46 C#/.NET

C++成员函数虚覆盖和同时重载

如果我有这样的代码: 结构 A {虚空 f(int) {}虚空 f(void*) {}};结构 B:公共 A {无效 f(int) {}};结构 C:公共 B {无效 f(无效*) {}};int main() {C c;c.f(1);返回0;} 我收到一条错误消息,提示我正在尝试进行从 int 到 void* 的无效转换.为什么编译器不能确定他必须调用 B::f,因为这两个函数都被声明为虚拟 ..
发布时间:2022-01-24 16:18:31 C/C++开发

强制基方法调用

Java 或 C# 中是否存在强制继承类调用基本实现的构造?您可以调用 super() 或 base() 但如果不调用它是否有可能引发编译时错误?那会很方便.. --编辑-- 我主要对重写方法感到好奇. 解决方案 没有也不应该这样做. 如果在基类中有这样的东西,我能想到的最接近的东西: public virtual void BeforeFoo(){}公共无效 Foo( ..
发布时间:2022-01-24 16:15:08 Java开发

从基类 C# 调用子类方法

是否可以从基类引用中调用子类方法?请建议... 代码示例如下: 公共类家长{公共字符串 Property1 { 获取;放;}}公共类 Child1:Parent{公共字符串 Child1Property { 获取;放;}}公共类 Child2 :父级{公共字符串 Child2Property { 获取;放;}}公开课程序{公共无效呼叫我(){父 p1 = new Child1();父 p2 ..
发布时间:2022-01-24 16:14:58 C#/.NET

是否可以将 Swift 泛型类函数返回类型限制为同一个类或子类?

我正在 Swift 中扩展一个基类(我无法控制).我想提供一个类函数来创建一个子类类型的实例.需要一个通用函数.但是,像下面这样的实现不会返回预期的子类类型. 类计算器{func showKind() { println("常规") }}类科学计算器:计算器{让模型:字符串=“HP-15C"覆盖 func showKind() { println("scientific") }}扩展计算器 {c ..
发布时间:2022-01-24 16:14:39 移动开发

将派生类传递给需要重写期望基类的方法

我有一个 A 类,有一个抽象方法 doAction(BaseClass obj) 需要一个 BaseClass 类型的参数 公共类 A {//....抽象无效doAction(BaseClass obj);//....} 现在,我有另一个类 B 需要扩展 A.但是,B 的 doAction 方法需要使用扩展 BaseClass 的对象 DerivedClass. 公共类 B 扩展类 A {/ ..
发布时间:2022-01-24 16:12:54 Java开发

从基类调用时,GetType() 会返回派生最多的类型吗?

GetType() 从基类调用时会返回派生最多的类型吗? 例子: 公共抽象类A{私有类型 GetInfo(){返回 System.Attribute.GetCustomAttributes(this.GetType());}}公共类B:A{//这里的字段添加了一些自定义属性} 或者我应该只创建一个派生类必须实现的抽象方法,如下所示? 公共抽象类A{受保护的抽象类型 GetSubType ..
发布时间:2022-01-24 16:11:47 C#/.NET

复制对象 - 保持多态性

以下代码尝试复制对象并保留原始类型.不幸的是,它不起作用(每个复制的对象都将成为 Super 而不是与其原始对象属于同一类). 请注意 copySuper(const Super& givenSuper) 不应该知道 Super 的子类. 可以做这样的副本吗?还是我必须更改 copySuper 的定义? #include #include 超级类{ ..
发布时间:2022-01-24 16:09:15 C/C++开发

隐藏在 c# 中的方法和一个有效的例子.为什么要在框架中实现?现实世界的优势是什么?

谁能用一个有效的例子来解释方法隐藏在C#中的实际使用? 如果方法是在派生类中使用 new 关键字定义的,则它不能被覆盖.然后它与创建一个具有不同名称的新方法(基类中提到的方法除外)相同. 使用 new 关键字有什么特别的原因吗? 解决方案 C#不仅支持方法覆盖,还支持方法隐藏.简单地说,如果一个方法没有覆盖派生方法,它就是隐藏它.必须使用 new 关键字声明隐藏方法.因此,第二 ..
发布时间:2022-01-24 16:08:52 C#/.NET

有什么组合不能实现继承可以吗?

组合和继承. 我知道它们都是在适当时选择的工具,并且上下文对于在组合和继承之间进行选择非常重要.然而,关于每种情况的适当上下文的讨论通常有点模糊.这让我开始考虑继承和多态是传统 OOP 的不同方面有多么明显. 多态性允许人们同样指定“is-a"关系以及继承.特别是,从基类继承隐含地在该类与其子类之间创建了多态关系.然而,虽然多态可以使用纯接口来实现,但继承通过同时传递实现细节使多态关系 ..
发布时间:2022-01-24 16:07:49 其他开发

不能因为类不是多态而沮丧?

是否可以在没有虚拟方法的情况下进行继承?编译器说下面的代码不是多态的. 例子: A 类 {上市:诠释一个;int getA(){返回一个;};}B类:公共A {上市:诠释 b;int getB(){返回 b;};} 在另一个类中,我们试图从 A 对象向下转换为 B 对象: A *a = ...;B *b = dynamic_cast(a) 但这会产生以下编译时错误: 不 ..
发布时间:2022-01-24 16:07:40 C/C++开发

从父类ctor调用重写的方法

我尝试从父类的构造函数中调用被覆盖的方法,并注意到跨语言的不同行为. C++ - 回响 A.foo() A 类{上市:A(){foo();}虚拟 void foo(){cout Java - 回响 B.foo() A 类{公共 A(){foo();}公共无效 foo(){System.out.println("A.foo()");}}B 类扩展 A{公共无效 foo(){System. ..
发布时间:2022-01-24 16:06:07 Java开发

需要Java代码片段输出说明

我的代码是: 类 Foo {公共int a = 3;公共无效 addFive() {a+=5;System.out.print("f");}}类 Bar 扩展 Foo {公共int a = 8;公共无效 addFive() {这个.a += 5;System.out.print("b");}}公共类TestClass {公共静态无效主要(字符串[]参数){Foo f = new Bar();f. ..
发布时间:2022-01-24 16:05:07 Java开发