问题标签 [class-visibility]
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 - Spring BeanFactory 如何能够实例化非公共类?
春季新手来了。
我观察到 Spring 能够实例化我定义的非公共类(即具有默认可见性的类)。谁能告诉我 Spring 是如何做到这一点的?为什么这是允许的?
php - 如何保护类属性免于在 PHP 中扩展类?
是否有可能做这样的事情:
如果变量 $private 不能被子类访问,我真的很喜欢它,但我不确定它是否可能仅仅基于基于类的开发范式。
私有属性不提供我正在寻找的功能。
我知道这不是准确的 PHP 代码,但这只是一个示例;)
php - 从包含文件调用私有或受保护方法
我的类.php
扩展名.php
好的,这就是问题所在,对于你们中的一些人来说,很明显我正在从包含文件调用私有方法,这显然会引发错误。我的问题是:
1. 有没有一种方法可以让包含文件使用外部函数来调用私有方法?
2. 我如何使用包含的文件来访问私有方法,并通过这样做将我的函数扩展到另一个文件,而不会使我的类文件变得如此臃肿且包含许多函数?
3. 这可能吗?
谢谢
php - 在 CodeIgniter 中调用另一个 Controller 中的一个 Controller 函数
我的 codeigniter 应用程序中有一个控制器“用户”。这个控制器有一个函数叫做logged_user_only()
:
当这个函数调用另一个名为的函数is_logged()
时,它只检查会话是否已设置,如果是则返回 true,否则返回 false。
现在,如果我将此函数放在同一控制器中任何函数的开头,它将检查用户是否未登录,否则它将重定向到login_form
继续。这工作正常。例如,
现在我想logged_user_only()
在另一个控制器的函数中调用这个函数来检查用户是否登录?
PS。如果不能这样做,或者不建议这样做,我应该在哪里放置这个功能来访问多个控制器?谢谢。
.net - 如何使用 Mono.Cecil 更改类型的访问器
这可能吗?
我想在内部创建一个公共课程。
谢谢
uml - 可以在 UML 类图上显示类可见性吗?
类可见性是对象设计的重要组成部分。我没有在几本 UML 书籍中看到任何显示非公共类的示例图,也没有看到在 Enterprise Architect 和其他工具中显示类可见性的方法。Enterprise Architect 和其他工具允许您在元模型中设置类可见性,但我还没有看到在图表中显示这一点的方法。
java - 如何使用反射机制来调用驻留在具有默认可见性的基类中的公共方法?
这个问题涉及java编程语言的反射机制。
我有一个界面:
我有这个接口的几个实现类。这里有一些例子:
(已编辑)作为旁注(这可能与有关反射机制的问题无关):
我正在实施一个复杂的规则集。这个规则集的一个缺点是对象之间有很多相互依赖关系。因此需要定义接口的一般行为。在实现规则集的一个部分时,您必须考虑另一个尚未实现的部分的行为。
接口的不同实现需要不同的资源/对象才能正常工作。为了减少重复代码,我使用抽象父类。这些抽象类不在其包之外使用。
在实例化和初始化具体实现类的实例时,我求助于反射机制。为此,我有一个实用程序类(位于单独的包中),我必须在其中指定所需的类名,哪个字段获取哪个值(即,然后将查找适当的 setter 方法)以及 setter 方法的顺序被称为。
我有两个不同的开发环境,每个环境都安装了不同版本的 java(1.5.x 和 1.6.x)。这主要用于交叉检查实现的行为。
实例化具体实现类的实例适用于两种环境。但是较旧的 java 版本初始化失败。不知何故,无法访问基类的公共 setter 方法(基类具有默认可见性)。较新的 java 版本在访问 setter 方法方面没有问题。
我发现的一种解决方法是更改基类的可见性(默认 -> 公共)。问题是,有没有办法保持可见性(默认)并仍然使用反射机制调用 setter 方法?
c++ - 用其他基类的方法满足纯抽象方法的最简单方法是什么
编辑:根据一些评论,简单的意思是a)代码更少,b)易于维护,c)很难出错。
编辑#2:此外,如果确实简化了InterfaceImpl
.
目前,我知道的唯一方法是让实现者定义抽象方法并将调用委托给目标基类型的方法。例子:
起初,我认为这也许可以解决问题:
第一个 using 语句将使这两个MethodOneImpl::method1
方法都公开,但它实际上不履行与 的约定Interface
,并且它修改了 的可访问性MethodOneImpl::method1(int)
。显然我们不能使用这个解决方案,method2
因为名称不匹配。
FWIW,我有我认为的解决方案,但它根本不是标准的一部分(换句话说,它不会编译)。我正在考虑向 C++ 委员会提出建议;如果有人有任何建议,我将不胜感激下面的任何评论(但请不要将建议作为答案提交)。
c++ - C++,如何将派生类转换为受保护的基类?
我需要将一个类转换为其受保护的基础:
我需要添加一个Line
,Array
但Object
基地是不可见的。我应该公开重新实现它的方法,还是有一个我可以覆盖的隐式转换运算符?
java - 包装和可见性
我正在制作一个 SDK,我正在尝试将类分离到不同的包中,这些类使用其他一些共享类。问题是如果我公开共享课程,每个人都可以看到它们,而不仅仅是我的课程。使它们只能由我的应用程序访问的正确方法是什么?
例子 :
打包一个 MyClass1
包 b MyClass2
包 c public MySharedClass
因为 c 是 public MySharedClass 将能够访问它,但问题是它也将对世界可见,我该如何防止呢?