- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
这是 question 的扩展
一个小时前问过。
当覆盖派生
类中的虚方法
时,我们不能修改访问修饰符
。考虑 System.Web.UI
命名空间中的 Control
类
public class Control : IComponent, IDisposable,...
{
protected internal virtual void CreateChildControls()
{ }
.
.
}
现在考虑一下
public class someClass : System.Web.UI.Control
{
// This should not compile but it does
protected override void CreateChildControls()
{ }
// This should compile but it does not
protected internal override void CreateChildControls()
{ }
}
任何人都可以解释一下吗?谢谢
最佳答案
We cannot modify the access modifiers when overriding a virtual method in derived class.
这个说法是错误的。在您描述的情况下,您可以并且必须更改访问修饰符。在其他情况下,您不得更改访问修饰符。
请参阅规范的第 10.6.4 节,其中指出:
an override declaration cannot change the accessibility of the virtual method. However, if the overridden base method is protected internal and it is declared in a different assembly than the assembly containing the override method then the override method’s declared accessibility must be protected.
推理很简单。
Asad,你有一个银行账户 BankAccount。
你有一个房子。你在豪斯租了一个房间给你最好的 friend 查理。
查理有一个住在公寓里的儿子大卫。
您有一个儿子 Elroy,住在公寓里。
Elroy 有一个儿子,也就是您的孙子 Frank,他住在蒙古包里。
Elroy 有一个最好的 friend Greg,他和他一起住在公寓里。
您将您的 BankAccount 访问权限授予您自己、居住在 House 中的任何人以及您的任何后代。因此,可以访问银行帐户的人是 Asad、Charlie、Elroy 和 Frank。
David 无法访问,因为他既不是您,也不是您的后代,也不住在 House 中。他是你室友的 child 无关紧要;他无法访问您的银行帐户。
Greg 也无法访问您的银行帐户。他不是你的后代。他不住在House。他与您的后代同住这一事实并不赋予他与您的后代相同的权利。
现在我们来到了问题的关键。 不允许 Elroy 将您的 BankAccount 的访问权限扩展到 Greg。您拥有该 BankAccount,并且您说“我自己、我的后代和我的室友”。您的 child 无权将 BankAccount 的可访问性扩展到您最初设置的范围之外。
当 Elroy 描述他对 BankAccount 的访问权限时,他只能说“我将访问权限授予我自己和我的后代”,因为这是您已经允许的。他不能说“我授予我自己、我的后代和 Condo 的其他居民对 BankAccount 的访问权限”。
明确一点:
关于c# - 用 protected 覆盖 protected 内部!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2375792/
我知道 C++ 中的 overriding 是什么。但是,是否存在覆盖?如果有,是什么意思? 谢谢。 最佳答案 在 C++ 术语中,您有 覆盖(与类层次结构中的虚拟方法相关)和 重载(与具有相同名称但
我想捕获位于另一个元素下的元素的鼠标事件。 这是我所拥有的示例:http://jsfiddle.net/KVLkp/13/ 现在我想要的是当鼠标悬停在红色方 block 上时蓝色方 block 有黄色
以下报道 here我尝试创建一个带有重叠散点图的箱线图。 但是当我运行时: In [27]: table1.t_in[table1.duration==6] Out[27]: counter 7
有一个 JS Fiddle here , 你能在不克隆到新对象的情况下替换 e.target 吗? 下面重复了那个 fiddle 的听众; one.addEventListener('click',
首先要解决重复的可能性: 我不是询问 Override 是什么、它的含义或 @Override 在 java 文档注释之外。那是我不是问 /**Some JavaDoc Comment*/ @over
我想要高于定义的数组。它存储点及其坐标。 public static List simpleGraph(List nodes) { int numEdges = nodes.size() *
我在 http://olisan.dk/blog/ 有一个博客- 如您所见,有一个 28 像素的高间隙(边距顶部)...在 style.css 中: margin-top: 0; 也被设置为 marg
Vulkan 句柄是指向 struct 的不透明指针,或者只是无符号的 64 位整数,具体取决于 VK_USE_64_BIT_PTR_DEFINES 的值: #if (VK_USE_64_BI
我正在尝试提供一个行为类似于 DataGridTextColumn 的 DataGrid 列,但在编辑模式下有一个附加按钮。我查看了 DataGridTemplateColumn,但似乎更容易将 Da
使用 Django 1.10 我想在用户名中允许\字符,因为我在使用“django.contrib.auth.middleware.RemoteUserMiddleware”的 Windows 环境中
我正在尝试使用 ffmpeg 将 Logo 放入 rtmp 流中。我的 ffmpeg 版本是 ffmpeg version 4.3.1目前在我的复杂过滤器中,我有: ffmpeg -re -i 'v
是否有用于Firebase 3存储的方法/规则来禁用文件更新或覆盖? 我为数据库找到了data.exists(),但没有为存储找到解决方案。 最佳答案 TL; DR:在Storage Security
我有两个 Docker Compose 文件,docker-compose.yml看起来像这样 version: '2' services: mongo: image: mongo:3.2
我需要覆盖 JPA 中的集合表吗?也许有人有想法 public class nationality{ @Embedded @AttributeOverrides({
嗨,我正在使用 WIX 和下面的代码将文件安装到目录中。 我的应用程序的工作方式是用户可以在该目录中复制他们自己的文件,覆盖他们喜欢的内容
我正在尝试为 Lua 中的字符串实现我自己的长度方法。 我已成功覆盖字符串的 len() 方法,但我不知道如何为 # 运算符执行此操作。 orig_len = string.len function
在Scala 2.10.4中,给出以下类: scala> class Foo { | val x = true | val f = if (x) 100 else 200
我想做上面的事情。 我过去覆盖了许多文件...... block ,模型,助手......但这个让我望而却步。 谁能看到我在这里做错了什么: (我编辑了这段代码......现在包括一些建议......
根据javadoc An instance method in a subclass with the same signature (name, plus the number and the ty
我有一段代码,只要有可用的新数据作为 InputStream 就会生成新数据。每次都覆盖同一个文件。有时文件在写入之前变为 0 kb。 Web 服务会定期读取这些文件。我需要避免文件为 0 字节的情况
我是一名优秀的程序员,十分优秀!