问题标签 [modifiers]
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.
c# - 为什么新的修饰符在将其隐藏在派生类中后会给我基类结果?
代码:
根据“new”修饰符的定义:“new 关键字显式隐藏了从基类继承的成员。”。然后,当我们在派生类中使用 new 修饰符调用该方法时,它应该始终将输出作为“Derived2 类”,但在所有三个条件下我总是得到输出“基类”。
任何人都可以解决我的疑问吗?
attask - Attask API - 组合修饰符
我想在同一个字段上应用多个修饰符。基本上,我需要发送这样的东西
/bill/count?field=TEXT&field_Mod=ne&field_Mod=notnull
但是,这样只会识别第一个修饰符而忽略第二个修饰符。反正有没有在同一个字段上发送多个修饰符?我找不到与此问题相关的答案。
任何帮助,将不胜感激。
java - Java 访问修饰符优先级
Java 访问修饰符隐含地赋予包访问优先于子类,因为default修饰符允许访问包而不是子类,受保护的允许访问两者,但是没有允许访问子类但不允许访问包的修饰符。这对我来说一直很奇怪,因为我自然倾向于认为子类“更接近”父类(即使它们毕竟是它们自己的变量)然后是同一个包中的类,而且我经常发现自己处于我想要为 sub 而不是包的修饰符。这可能意味着我以“错误”的方式使用包,但有人可以解释一下这个决定背后的逻辑吗?
c++ - c++ `override` / `final` 说明符的对立面是什么?
- 在 c++11 中,
override
说明符防止不覆盖预期的虚拟基函数(因为签名不匹配)。 - 说明
final
符可防止无意中覆盖派生类中的函数。
=> 是否有一个说明符(类似于 Maybefirst
或no_override
)来防止覆盖未知的基函数?
当一个虚函数被添加到一个与派生类中已经存在的虚函数具有相同签名的基类时,我想得到一个编译器错误。
编辑 4:为了使这个问题简单且答案相关,这里又是
原始伪代码
- 摘要
class B : A
有private: virtual void fooHasBeenDone() = 0;
class C : B
工具private: virtual void fooHasBeenDone() override { react(); }
- 现在
class A
得到一个新的private: virtual void fooHasBeenDone();
- 但新的
A::foo
可能与原来的有所不同B::foo
。
和一个具体的例子
- 摘要
class B : A
有virtual void showPath() = 0;
一个 PainterPath class C : B
工具virtual void showPath() override { mPath.setVisible(); }
- 现在
class A
得到一个新的virtual void showPath();
含义文件路径 - 现在,当 A 调用 showPath() 时,B 显示painterPath 而不是某个文件路径。
当然这是错误的,然后我也应该重命名B::showPath()
并B::showPainterPath()
实现B::showPath() override
。我只是想从编译器那里得到通知。
这是一个编译的真实示例:
运行它并查看文本输出。
作为参考,具有特定用例(PainterPath 实例)的旧示例:
https://ideone.com/6q0cPD(链接可能已过期)
ruby-on-rails - 添加对不同于 id 的所选列的引用
是否可以添加对不同于列的列的引用id
?
通常在创建两个模型(Model1 和 Model2)之间的关系时,使用model1:references
andmodel2:references
来创建关系模型会自动添加一个model1_id
andmodel2_id
列(以及一个索引和一个外键引用)以用于 model1/model2 关联:
比如说Model1 = Teacher
和Model2 = Pupil
。
假设 Model2 的记录(学生的记录)不时通过 rake 任务进行更新:它的属性值(例如name
和school_credits
)会改变,保留id
和ranking
(1 到 100)。
将老师与a联系起来pupil_id
没有多大意义。每位教师都应该使用属性而不是.
作为外键引用来与其学生的姓名相关联。pupil.name
pupil.id
那可能吗?
我可以在命令中添加哪些选项,或者我应该添加rails generate Relationship
什么参考来获得这个结果?
c# - 在控制台中检测 Ctrl + S
我正在开发一个控制台应用程序,我需要在其中检测几个热键,例如Ctrl+ N、Ctrl+O和Ctrl+ S。这是我用来识别这些热键的部分代码:
Ctrl上面的代码对+N和Ctrl+没有任何问题O。但是,我无法让它为Ctrl+工作S。在做了一些快速测试之后,我发现按下Ctrl+S甚至什么都没有做(这意味着程序仍在等待用户输入某些内容)。
此问题仅发生在Ctrl+S上。对任何其他修饰符(例如)和键(,等)使用一些简单if
的语句都可以正常工作。ShiftNO
为什么会这样?Ctrl+S组合有什么特殊含义吗?有可能完成这项工作吗?如果是,如何?
scala - Scala:如何使字段对子类可见,但对其内部类不可见?
如何使字段对子类可见,但对其内部类不可见?
javascript - Object.keys 返回私有属性
我有使用 Typescript 创建的类/viewModel。我将此类中的一个字段设为私有,以便在尝试获取所有其他类属性时跳过它。
对吗?我怎样才能跳过我的私人财产?
我的班级示例:
java - 提取和覆盖重构实践强制“受保护”修饰符
在练习提取和覆盖重构时,我经常举出非常熟练的教练和培训师的例子,其中提取方法的访问修饰符从私有更改为受保护。
在上面的示例中,代码被提取出来,IDE 在目标代码中创建了一个带有私有修饰符的新方法。这是期望的行为。为了能够覆盖被测类,它被重新编辑为受保护。这是不希望的,因为这意味着生产代码失去了可读性并获得了不必要的访问权限。
请注意,我想使用纯 Java 并且没有模拟框架。我将单元测试保存在同一个包中的不同路径中。
我的问题:为什么不将方法包设为私有(无修饰符)?
请参阅中的包私有修饰符:控制对类成员的访问
swift - 使用“公开”和“公开”
我已经阅读了有关新修饰符“open”和“fileprivate”的文档。但是有两点我不明白:
- 为什么不能将协议或扩展也声明为“开放”?这是否意味着不可能在模块之外使用这些东西?
- 如果我不想为一个模块而是一个通用应用程序构建我的类,我应该将我的类和方法声明为“开放”还是只将它们保持为“公共”是一种好习惯?