问题标签 [method-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.
java - 继承隐藏方法
我有一个具有 4 个方法的接口和一个实现该接口的类。问题来了:“我怎样才能从接口中只继承其中的两个方法,而我的类不会变成抽象的?”
c# - 在 C# 中结合方法隐藏和方法覆盖
我只是找不到令人满意的解释。所以我认为在 SO 上发布这个会有所帮助。
当我们结合时会发生什么method hiding and overriding in C# ?
对于以下示例:
我理解的输出
这是我对C#new
的理解override
New
- 它隐藏了基类方法。因此,即使基类引用变量指向派生类对象,如果派生类隐藏了方法,输出也将只是基类输出。
Override
- 它覆盖了基类方法。因此,即使基类引用变量指向派生类对象,如果派生类覆盖该方法,输出也将是派生类输出。
但是这里怎么可能连BaseClassA
引用变量都指向一个DerivedClassC
对象并打印DerivedClassB
输出呢?
请用简单的话解释一下。
ruby - 替换代码片段中的类和变量名称
我想在 CV 中插入我的代码的一些要点。为了不知道这段代码是关于什么的,我想用一些随机字符串自动替换所有类、方法和变量名称(使用一些脚本或在线创建者?),这样我就可以显示“我是如何编写的”,但我没有'不显示真正的功能。
我想改成:
或者也许有人知道更好的方式来向其他人展示“我的代码看起来如何,但没有向他展示功能”?
提前致谢
c# - 方法隐藏和覆盖调用决策
在基于类型引用对象的方法覆盖的情况下,将决定保持方法调用。在方法隐藏的情况下,将根据对象方法调用的类型来决定。
谁能解释一下覆盖+隐藏中的方法调用决策。
#1 和 #2 调用 Derived.DoIt 因为运行时多态性。
#4 称为 Derived.DoIt,因为 d 是 Derived 类型(方法隐藏)。
但是为什么#3 调用 Derived.DoIt。
在c#中覆盖加隐藏的情况下调用顺序是什么?
提前致谢
java - 使用android studio IDE隐藏jar中方法的实现
我使用 Android Studio 构建了一个 jar,当我在我的演示项目中使用这个 jar 时,当我从我的演示项目中打开一些类时,我能够看到类中方法的实现,当我打开 My SDKClass(在罐子里)。
我想要这样的东西
c# - 无法隐藏继承的成员编译器错误
我想做:
但由于某种原因,我收到了编译器错误:
CS0533 'Concrete.Execute()' 隐藏继承的抽象成员 'Program.Base.Execute()
我过去隐藏了很多成员,但从未遇到过这种情况,对此我感到很困惑。在 MSDN 和网络上花了很长时间,但找不到任何关于这种行为的信息。
我非常感谢您对这个问题的任何见解。
这是小提琴。
c# - 为什么使用 new 关键字“隐藏”基类中的虚方法,而不是“公开”
来自MDSN
“如果派生类中的方法以 new 关键字开头,则该方法被定义为独立于基类中的方法。”
“然后派生类可以使用 override 关键字覆盖基虚拟方法,或者使用 new 关键字将虚拟方法隐藏在基类中。”
为什么使用 new 关键字“隐藏”基类中的虚方法,而不是“公开”?“隐藏”不意味着不会被使用吗?结果表明,当派生类中使用new关键字时,基类中使用了虚方法('exposed'而不是'hidden')。
java - Liskov 的替换原则与 JAVA 中的覆盖有何关系?完全隐藏和覆盖之间有什么区别?
在编程语言中,如果您希望子对象充当父对象的替代品,并且它仍然不应该失去自己的身份(作为子对象),则必须获得父对象的许可。这就是为什么我们在 C# 或 C++ 中将这些方法设为虚拟的原因。这变成了一个完全的隐藏。完全隐藏在java中被认为是覆盖吗?99% 的时间我在这里有错误的概念,因为我认为我只是在考虑隐藏它。一个被覆盖的函数可以像只关注 JAVA 的那样完全隐藏吗?
c# - 单击 C# WPF 应用程序隐藏按钮
我被要求在 VS 2013 中创建一个 C# WPF 应用程序,场景如下。在应用程序开始时,必须出现一个带有两个按钮的表单。在顶部按钮上,必须写入文本“Button 1”,在底部按钮上必须写入文本“Button 2”。第一次,当按钮 1 或按钮 2 中的任何一个被单击时,它将消失,而另一个按钮将保持不变。例如,用户第一次单击按钮 1,然后按钮 1 将消失。按钮 2 将保持不变。现在窗口上只有一个按钮,即按钮 2。单击按钮 2 时它将消失,而按钮 1 将重新出现在窗口中。现在,如果用户单击按钮 1,它将再次消失,按钮 2 将重新出现。此过程可能会无限期地进行,直到通过单击关闭按钮终止应用程序。
我已经创建了所有东西,但 button1.Visible=true; 无法输入 VS 正在生成警告“sytem.windows.control.button 不包含 Visible 的定义。
我需要帮助
c# - 传递给 UserControl 的继承 ViewModel 被视为子 ViewModel
我有一个 View MainWindow.xaml,其中包含在 Button.xaml 中定义的两个按钮。按钮绑定到IsVisible
定义按钮是否可见的属性。
MainWindow.xaml:
按钮.xaml:
对于按钮,我有两个 ViewModel:ButtonViewModel
和ButtonViewModelChild
.
ButtonViewModelChild
继承自ButtonViewModel
。两者都提供IsVisible
属性:
按钮视图模型:
ButtonViewModelChild:
MainWindow.xaml 的 ViewModel 包含一个属性ButtonViewModel1
和ButtonViewModel2
. 这些属性如下所示:
ButtonViewModel
如果用作按钮的 DataContext,则该按钮应该是不可见的,如果使用,则应该是可见的ButtonViewModelChild
。
我假设使用 ButtonViewModel1 作为 DataContext 的按钮得到 a ButtonViewModel
,另一个按钮得到 a ButtonViewModelChild
。所以第一个按钮将不可见,而第二个按钮将不可见。两个按钮都是可见的。WPF 在这里做什么?显然,它两次都使用了实例的继承视图。有没有办法告诉 WPF 使用属性的返回类型而不是创建的实例类型?
我知道方法隐藏不是最佳实践。我可能会更改设计,但我很好奇为什么结果不如预期。