我知道错误"set访问器的可访问性修饰符必须比属性或索引器更具限制性".我也知道解决方案.只是不在这个非常具体的情况下.
考虑这个例子:
internal virtual bool IsFocused
{
get
{
return isFocused;
}
protected set
{
isFocused = value;
}
}
private bool isFocused;
Run Code Online (Sandbox Code Playgroud)
它显示错误.我只是不知道为什么.如何"保护"不比内部更容易获得?这个问题的解决方案是什么?我试着改为"内部保护"而没有运气.
这是一段代码:
private class myClass
{
public static void Main()
{
}
}
'or'
private class myClass
{
public void method()
{
}
}
Run Code Online (Sandbox Code Playgroud)
我知道,第一个不行.第二个会.
但为什么首先不工作?它有什么具体原因吗?
实际上从这个角度寻找解决方案,这就是为什么要大胆.抱歉
在代码行方面是否有关于"获取"大小的指导方针或一般共识?我在一个成员上有一个Get方法,这里很容易增长到30行代码.我不确定在什么时候这应该被引入一个方法.但是后来我只会调用类似GetMyString的东西并将值赋给另一个成员并在构造函数中调用它.
有没有值得这样做?
这对SO来说太主观了吗?
派生类如何从基类调用方法.
另一方面,其他课程不应该有访问权限.
我的情况:
我有一个基类,我写了一个私有方法来注册一些值.
private void register(string param1, int param2){//...}
Run Code Online (Sandbox Code Playgroud)
我这样做是为了允许子类注册不同的东西.
问题是,派生类无法访问基类的私有方法或字段.
这对我来说很有意义,因为私有意味着私人.
我不想将该方法设为公共,因为其他类不应该能够调用此方法.
有人可以提供解决方案或指导我更好的设计吗?
我正在攻读我的BS,我的教授给了我一个任务,他说:创建一个类而不使用任何访问修饰符或接口关键字,其对象无法创建.
我通过谷歌但无法找到解决方案.如何在Java中完成?
在Swift 4中,由于现在private在同一源代码文件中也可以看到扩展,它与fileprivate访问修饰符有什么不同?
背景:在Swift 3中,类中的私有变量在同一文件的扩展中不可见.为此,fileprivate必须使用.
我想要进行以下设置:
class Descriptor
{
public string Name { get; private set; }
public IList<Parameter> Parameters { get; private set; } // Set to ReadOnlyCollection
private Descrtiptor() { }
public Descriptor GetByName(string Name) { // Magic here, caching, loading, parsing, etc. }
}
class Parameter
{
public string Name { get; private set; }
public string Valuie { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)
从XML文件加载后,整个结构将是只读的.我想这样做,只有Descriptor类可以实例化一个参数.
一种方法是创建一个IParameter接口,然后Parameter在Descriptor类中使类成为私有,但在实际使用中,Parameter将有几个属性,我想避免重新定义它们两次.
这有点可能吗?
我正在阅读Sybex Complete Java 2认证学习指南2005年4月(ISBN0782144195).本书适用于想要通过java认证的java开发人员.
在关于访问修饰符(以及其他修饰符)的章节之后,我发现了以下问题(#17):
对或错:如果类Y扩展了类X,那么这两个类在不同的包中,并且类X有一个名为abby()的受保护方法,那么Y的任何实例都可以调用Y的任何其他实例的abby()方法.
这个问题让我有点困惑.
据我所知,你可以在同一个类(或子类)的任何变量上调用protected方法.您不能在变量上调用它,层次结构中的变量比您更高(例如,您实现的接口).
例如,您不能仅仅因为继承它而克隆任何对象.
但问题没有提到变量类型,只涉及实例类型.
我有点困惑,回答"真实".
书中的答案是
假.从不同包中的超类继承受保护方法的对象可以在自身上调用该方法,但不能在同一类的其他实例上调用该方法.
这里没有关于变量类型的内容,只有实例类型.
这很奇怪,我不明白.
谁能解释一下这里发生了什么?
我今天遇到了以下"奇怪"功能 - 如果您在A类主体中引用了A类中的对象,则可以访问该对象的私有字段 - 即:
public class Foo{
private int bar;
private Foo foo;
public void f()
{
if(foo.bar == bar) // foo.bar is visible here?!
{
//
}
}
}
Run Code Online (Sandbox Code Playgroud)
有人对此有一个很好的解释吗?
由于私有方法是隐式最终的.
私有或静态或最终方法是早期绑定意味着它们不能被覆盖.
但在我的代码中,它实际上正常运行.
public class B extends A {
public static void main(String[] args) {
new B().privateMethod(); //no error -output B-privateMethod.
}
private void privateMethod() {
System.out.println("B-privateMethod.");
}
}
class A{
private void privateMethod() {
System.out.println("A-privateMethod.");
}
private static void privateStaticMethod() {
System.out.println("privateStaticMethod.");
}
}
Run Code Online (Sandbox Code Playgroud)
此外,我想确保使私有成员静态的好处,除了可以使用class-name.member,而不是类中的非静态成员.它们是私人的,所以不能在课外使用.例如hugeCapacity(),ArrayList类中的方法.
private static final int DEFAULT_CAPACITY = 10;
private static int hugeCapacity(int minCapacity) {
if (minCapacity < 0) // overflow
throw new OutOfMemoryError();
return (minCapacity > MAX_ARRAY_SIZE) ?
Integer.MAX_VALUE : …Run Code Online (Sandbox Code Playgroud) access-modifiers ×10
c# ×5
java ×4
class ×3
.net ×1
c#-3.0 ×1
certificate ×1
members ×1
object ×1
properties ×1
protected ×1
swift ×1
swift4 ×1