首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

是否允许在Base实例上编写Derived实例?

在面向对象编程中,Base实例和Derived实例是继承关系中的两个概念。Base实例是派生类(Derived)的基类,Derived实例是派生类的实例。

在一般情况下,是不允许在Base实例上直接编写Derived实例的。因为Base实例是基类的实例,它只包含基类的属性和方法,不包含派生类的特有属性和方法。编写Derived实例需要使用派生类的定义和特有的属性和方法,因此应该在Derived实例上进行编写。

然而,具体是否允许在Base实例上编写Derived实例,还要根据编程语言和具体的继承关系来确定。有些编程语言可能会提供一些特殊的机制,允许在Base实例上进行派生类的编写。这种情况下,通常是通过特定的语法或方法来实现,以确保在Base实例上编写Derived实例不会破坏继承关系的完整性。

总的来说,一般情况下不允许在Base实例上编写Derived实例,应该在Derived实例上进行编写。具体是否允许,需要根据编程语言和具体的继承关系来确定。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 编写java判断闰年_用Java程序判断是否是闰年的简单实例

    鉴于此,程序可以作以下设计: 第一步,判断年份是否被400整除,能的话,就是闰年。比如1600、2000、2400年是闰年。...第二步,第一步不成立的基础,判断年份能否被100整除,如果是,则不是闰年。比如1900、2100、2200年不是闰年。 第三步,第二步不成立的基础,判断年份能否被4整除,如果是,则是闰年。...第四步,第三步不成立的基础,则不是闰年。比如1997、2001、2002年不是闰年。...System.out.println(nianfen+”年是闰年”);}//判断能否被4整除 else{System.out.println(nianfen+”年不是闰年”);} } } 经初步测试,此程序可以正确判断是否是闰年...//年份能被4整除但不能被100整除,或者年份能被400整除 else{System.out.println(nianfen+”年不是闰年”);} } } 以上就是小编为大家带来的用Java程序判断是否是闰年的简单实例全部内容了

    1.4K20

    TypeScript 官方手册翻译计划【十二】:类

    的一种做法: // 通过一个基类引用去命名一个派生类实例 const b: Base = d; // 没有问题 b.greet(); 如果派生类 Derived 没有遵循基类 Base 的约束,会怎么样呢...糟糕的是,这些变通方法 IE10 或者更旧的版本无法使用。你可以手动将原型的方法复制到实例(比如将 MsgError.prototype 的方法复制给 this),但原型链本身无法被修复。...Property 'x' is private in type 'Base' but not in type 'Derived'. */ x = 1; } 跨实例访问私有成员 对于同一个类的不同实例互相访问对方的私有成员是否合法...毕竟,根据 greet 的定义,编写这样的代码理应是完全合法的,它最终会构造一个抽象类的实例: // 不行! greet(Base); 但它实际上会报错。...一个结构化的类型系统中,一个没有成员的类型通常是任何其它类型的超类。所以如果你编写了一个空类(不要这么做!)

    2.6K10

    C++核心准则​讨论:将基类的析构函数设为公共和虚拟的,或受保护的和非虚拟的

    也就是说,是否应该允许通过指向基类的指针进行销毁?如果是,则base的析构函数必须是公共的才能被调用,否则虚拟调用它会导致未定义的行为。...如果Base的析构函数是公共的和非虚拟的(默认值),则可能会意外地实际指向派生对象的指针上调用它,在这种情况下,尝试删除的行为是不确定的。...是否应该使用指向Base的指针将其公开给所有调用者使用,还是作为隐藏的内部实现细节。...如第39项所述,对于普通成员函数,选择之间是允许以非虚拟方式(通过指向Base的指针)调用它(但如果它调用虚拟函数(例如在NVI或模板方法模式中),则可能具有虚拟行为) ),实际还是根本没有。...因此,对于基类析构函数,选择是根据是否允许通过指向Base的指针实际上调用它。“非虚”不是一种选择。因此,如果可以调用(即是公共的)基类析构函数,则它是虚拟的,否则是非虚拟的。

    1.1K20

    必知必会之C++多态机制

    静态多态主要有两种形式: 函数重载: 函数重载允许同一作用域内声明多个函数,它们具有相同的名称但参数列表不同。调用函数时,编译器根据传递的参数的数量、类型和顺序来选择匹配的函数。...(5); // 调用第一个 print 函数 print(3.14); // 调用第二个 print 函数 return 0; } 模板: 模板是一种通用编程技术,允许编写与特定类型无关的代码...通过使用模板,可以不同类型的参数上执行相同的操作,而无需为每种类型编写不同的函数。... main() 函数中,我们创建了 Derived 类的对象 derivedObj,然后使用 Base 类的指针 basePtr 指向了 derivedObj。... main() 函数中,我们创建了 Derived 类的对象 derivedObj,然后使用 Base 类的指针 basePtr 指向了 derivedObj。

    13310

    C++基础-多态

    ,进而被解读为一个 Base 实例,但该实例的 VFT 指针仍指向 Derived 类的虚函数表,因此通过该 VTF 执行的是 Derived::Func1()。...纯虚函数和抽象基类 C++ 中,包含纯虚函数的类是抽象基类。抽象基类用于定义接口,派生类中实现接口,这样可以实现接口与实现的分离。抽象基类不能被实例化。...实例只包含一个 Base 实例。...使用 override 明确表明覆盖意图 从 C++11 起,程序员可使用限定符 override 来核实被覆盖的函数基类中是否被声明为虚函数。...• 派生类中被声明为 override 的函数是否是基类中对应虚函数的覆盖?确保没有有手误写错。 编程实践:派生类中声明要覆盖基类函数的函数时,务必使用关键字 override 7.

    85620

    详解 Java 对象与内存控制(下)

    20 2 分析: (1) 都输出2 (2) 都输出20 (3) 根据详解 Java 对象与内存控制()中内容的介绍,我们知道当编译时类型和运行时类型不同时,访问实例变量将访问 Base 的 count...,但对于方法来说,不管是否重写父类的方法,同名的方法子类只能拥有一个,要么是父类的,要么是自己重写的 2.同名的实例变量在内存中是怎么存的?...内村中并不存在 Mid 和 Base 两个对象,只有一个 Sub 对象,只是这个 Sub 对象中不仅保存了 Sub 类中定义的所有实例变量,还保存了它的所有父类所定义的全部实例变量,程序通过 Base...Java程序允许通过方法return this;返回调用该方法的Java对象,但不允许直接return super或者直接将super当成一个引用变量来使用,接下来会深入的分析这些语法规则 Apple...= 20 Base's count = 20 总结: 子类中可以使用父类的类名作为主调来访问父类的类变量 子类中可以使用super作为限定符来访问父类的类变量 建议使用父类类名来访问父类类变量,这样代码可读性好

    32410

    C++基础-继承

    实例化 Fish 部分和 Tuna 部分时,先实例化成员属性,再调用构造函数。析构顺序与构造顺序相反。...2.1 类成员访问权限 类的成员有三种类型的访问权限: public: public 成员允许类外部访问。类外部访问方式包括通过类的对象访问,通过派生类的对象访问以及派生类内部访问。...protected: protected 成员允许类内部、派生类内部和友元类内部访问,禁止继承层次结构外部访问。 private: private 成员只能在类内部访问。...注意一点,派生类对象所在的内存空间里含有基类数据成员信息,包括基类私有数据成员,但派生类没有权限访问基类私有数据成员,编译器语法不支持。...如下: Base baseDerived derived; base = derived; // 正确 derived = base

    97620

    从零开始学C++之继承(一):公有私有保护继承、overloadoverwriteoverride之间的区别

    继承是使用已经编写好的类来创建新类,新的类具有原有类的所有属性和操作,也可以原有类的基础作一些修改和增补。...关键字private后面声明,只允许本类中的函数访问,而类外部的任何函数都不能访问。...比如,我们只能得到位于堆上的实例,而得不到位于栈实例。能不能实现一个和一般类除了不能被继承之外其他用法都一样的类呢?办法总是有的,不过需要一些技巧。...public MakeFinal { public:     FinalClass2() {}     ~FinalClass2() {} }; 这个类使用起来和一般的类没有区别,可以...、也可以堆上创建实例

    94600

    C++虚函数详解

    C++虚函数详解 前言 C++的特性使得我们可以使用函数继承的方法快速实现开发,而为了满足多态与泛型编程这一性质,C++允许用户使用虚函数 (virtual function) 来完成 运行时决议 这一操作...它指向用户所定义的虚函数,具体是子类里的实现,当子类调用虚函数的时候,实际是通过调用该虚函数指针从而找到接口。...虚函数指针是确实存在的数据类型,一个被实例化的对象中,它总是被存放在该对象的地址首位,这种做法的目的是为了保证运行的快速性。...与JAVA不同,C++将是否使用虚函数这一权利交给了开发者,所以开发者应该谨慎的使用。...因此在上述的例子中,将Derived类型的子类传入show函数时,实际类型转化为了Base,由于此时虚函数并未完成定义,Derived的func()此时仅仅是属于Derived自己的虚函数,所以show

    52310

    Kotlin的互操作——Kotlin与Java互相调用

    ();//没问题,通过单例实例调用 Obj.INSTANCE.foo();// 也没问题 @JvmStatic注解也可以被应用于对象或伴生对象的属性,使其getter和setter方法该对象或包含该伴生对象的类中是静态成员...: Derived): Box = Box(value) fun unboxBase(box: Box): Base = box.value 将这两个函数转换成Java代码...: Box boxDerived(Derived value) { … } Base unboxBase(Box box) { … } Kotlin中可以这样写:unboxBase...(boxDerived("s")),但是Java中是行不通的,因为Java中Box类在其泛型参数T是不型变的,于是Box并不是Box的子类。...因此,将示例中的对应函数实际翻译如下: // 作为返回类型——没有通配符 Box boxDerived(Derived value) { … } // 作为参数——有通配符 Base

    3.8K10

    深入解析C++中的虚函数和虚继承:实现多态性与继承关系的高级特性

    << "son的析构函数" << endl; } }; void test00() { //son s;不允许使用抽象类类型 "son" 的对象 //base s; //new base;...一个派生类可以选择重写纯虚函数,也可以将其继续声明为纯虚函数,这取决于派生类是否需要进一步派生。...class implementation." << std::endl; } }; int main() { // Base base; // 错误,无法实例化抽象类 Derived...derived; derived.pureVirtualFunction(); // 调用Derived类的实现 Base* basePtr = &derived; basePtr...Derived类继承自Base类,并提供了对纯虚函数的具体实现。通过Derived类的对象或基类指针可以调用纯虚函数的具体实现。 纯虚函数允许基类中定义一组接口,并强制要求派生类提供相应的实现。

    1.5K10
    领券