问题标签 [member-hiding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
134 浏览

c++ - c++中的重写函数

输出是:

为什么第二个调用b2->some_func(f1)调用Base类的函数,即使类中有一个带有浮点作为参数的版本Derived

0 投票
2 回答
1329 浏览

python - Python:在派生类中隐藏基类的成员

如何在我的派生类中覆盖基类的成员,以便访问此类成员导致调用派生成员?考虑以下示例?__tmp被覆盖B并且应该在调用的情况下返回tmp()

0 投票
1 回答
280 浏览

java - 是否可以从 Java 中的外部对象访问隐藏字段?

考虑一个类,对超类隐藏成员。如果实现克隆,那么如何正确更新两个成员?

0 投票
2 回答
66 浏览

c++ - 关于隐藏超类成员的问题

在我的子类中,我通过在我的子类中重新定义它来隐藏一个超类成员变量或类型,并想知道使用子类隐藏的成员变量的函数调用会发生什么。举个例子:

当我执行以下操作时会发生什么:

Q1:这会返回A::x_还是B::x_??

怎么样:

Q2: b.x_vector_ 是 typevector<A::X>还是vector<B::X>??

0 投票
2 回答
257 浏览

c# - 在 c# 的每个派生类中都有一个更具体的接口

我试图举一个尽可能简单的例子,但这个问题的本质至少对我来说是相当混乱的。

为了重用代码而不是重复我自己,我有一个IStudent实现另一个接口的接口IPerson

我有一个类实现IStudent

现在我有一个CommunityBase具有类型字段的抽象类IPerson

我还有一个派生自CommunityBase被调用的类University。因为University是一个更具体的类我想使用更具体的接口。所以代码如下:

为了使所有这些工作,new应为IStudent member. 此外,我需要在基类中分配该member字段一次,然后在派生类中再次分配。

我想要做的是member在构造函数中分配一次,CommunityBase但是这样我就不能使用类中定义的属性或IStudent方法University

上述所有代码都按预期编译和工作,但我想知道是否有一种更简单、更简单/易于阅读的方法来做到这一点。从我读到的内容来看,new如果我继续使用此代码,人们倾向于避免使用隐藏关键字,是否会有任何潜在问题?

0 投票
2 回答
1270 浏览

java - 来自父类和实现接口的具有相同名称的字段,并且仅在一个类差异内

研究 2 代码片段

片段1:

此代码编译正常。

片段2

结果:带有消息的编译错误

解析度

对我来说,两个片段看起来都一样。

为什么我看到不同的结果

Abimaran Kugathasan 更新

你说:

接口中的字段是隐式公共静态的,并且没有继承到子类

反例:

我不能这样写

为什么?我只处理静态内容。

0 投票
9 回答
4803 浏览

java - Java名称隐藏:艰难的方式

我有一个非常难以解决的名称隐藏问题。这是解释问题的简化版本:

有一个类:org.A

然后有一堂课net.foo.X

现在,这是继承自A并想要调用的有问题的类net.foo.X.doSomething()

如您所见,这是不可能的。我不能使用简单名称X,因为它被继承的类型隐藏。我不能使用完全限定名称net.foo.X,因为net它被继承的字段隐藏。

只有类B在我的代码库中;类net.foo.Xorg.A是库类,所以我不能改变它们!

我唯一的解决方案是这样的:我可以调用另一个类,然后调用X.doSomething(); 但是这个类只会因为名字冲突而存在,看起来很乱!有没有我可以直接调用X.doSomething()的解决方案B.doSomething()

在允许指定全局命名空间的语言中,例如,global::在 C# 或::C++ 中,我可以简单地net使用这个全局前缀作为前缀,但 Java 不允许这样做。

0 投票
2 回答
74 浏览

java - 子类变量没有隐藏超类中的变量

我刚刚了解到,如果有两个变量,一个在超类中,一个在子类中,它们共享相同的名称,分配给子类中变量的值将隐藏超类中变量的值。我已经编写了一个程序来检查它,但输出清楚地表明任何隐藏过程都没有发生或者真的发生了?如果子类隐藏超类中的变量,“Aa”和“Ba”的值应该是 25 对吗?请帮帮我。

注意:我是这个 java 编程的新手。请详细解释您的答案。谢谢你

这是代码

输出在这里:

0 投票
5 回答
1340 浏览

c++ - 在 C++ 中隐藏、重载或覆盖

然后我又有一个问题。像这样的东西:

输出是“Base.”。然后功能规则不起作用,我对此感到困惑,您能帮帮我吗?谢谢。

0 投票
4 回答
3189 浏览

java - 在子类中隐藏方法

我有一个带有一些实现方法的抽象超类。

是否可以在继承自该超类的子类中隐藏该超类的方法?我不想在某些子类中从超类中看到某些方法。最后但并非最不重要的一点是,是否可以更改子类中与超类中具有相同名称的方法的参数数量?

假设我们public void test(int a, int b)在超类中有一个方法,但现在我想public void test(int a)在子类中有一个方法调用超类函数,并且超类中的方法不再可见。