首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >继承基础

继承基础
EN

Stack Overflow用户
提问于 2011-07-20 15:52:09
回答 2查看 88关注 0票数 2
代码语言:javascript
复制
class Base
{

}

class Derive:Base
{

}

Base b=new Derive();

上面的代码可以工作,但是为什么我们能够创建一个派生类的对象,并将其分配给基类引用。此外,对象变量'b‘将能够访问Class Base的所有非私有变量和方法,即使它引用的是派生类。为什么引用派生对象的对象变量'b‘能够访问基类而不是派生类。

EN

回答 2

Stack Overflow用户

发布于 2011-07-20 15:55:57

允许上述代码工作的理论称为:当DerivedBase的一个子类型时,就形成了一种" is -a“关系。

稍后不能访问Derive类的属性和方法的原因是(至少对于计算机而言)没有任何迹象表明类型为Base的变量包含类型为Derive的实例,从而允许访问这些属性/方法。如果您使用另一个类DerivedToo : Base,它具有Derive以外的其他方法,那么您很快就会看到,如果您假设Base变量保存一个Derive实例,那么程序会如何崩溃。

票数 3
EN

Stack Overflow用户

发布于 2011-07-20 16:00:10

我认为这是多态问题,而不是继承。

派生类的关键功能之一是,指向派生类的指针与指向其基类的指针类型兼容。使用多态性,您可以利用此功能。

多态允许您在运行时通过基类引用调用派生类方法。当您需要将一组对象分配给一个数组,然后调用它们的每个方法时,这很方便。它们不必是相同的对象类型。但是,如果它们通过继承相关,则可以将它们作为继承类型添加到数组中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6758693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档