Tag: 访问修饰符

访问修饰符如何影响Java中的性能?

在java编程中,使用protected或public的方法级访问修饰符可以使用private来以任何方式影响性能吗? 如果是这样,它会以什么方式影响运行时性能。

Java包级别访问

我知道具有默认访问控制的类成员可以在包级别访问,但我对包级访问实际意味着什么感到困惑。 如果可以在包级别访问默认成员,那么在下面的示例中,我不应该在类Test2中看到它吗? 1级 package pkg1; public class Test { int i=0; } 2级 import pkg1.Test; public class Test2 { void get(){ Test t = new Test(); ti=0; } } 请帮助我理解这个概念。 提前致谢。

Java – 类方法可以看到同类参数的私有字段

我遇到了一个相当奇怪的行为,并且不确定这是一个Java问题还是只是Eclipse的问题。 请使用以下代码: class Foo { private String text; public void doStuff(Foo f) { System.out.println(f.text); } } 这里的问题是,为什么f.text可以访问? 这是一个私有领域,所以根据我的逻辑,它不应该,但IDE似乎认为它是。

Java构造函数具有比其类更广泛的访问级别

Java规范允许具有默认访问权的类具有其构造函数的公共访问权限,它的目的是什么,因为它不能在其包之外引用?

帮助理解受保护方法的问题

我正在阅读2005年4月的Sybex完整Java 2认证研究指南 (ISBN0782144195)。 本书适用于想要通过java认证的java开发人员。 在关于访问修饰符(以及其他修饰符)的章节之后,我发现了以下问题(#17): 对或错:如果类Y扩展了类X,那么这两个类在不同的包中,而类X有一个名为abby()的受保护方法,那么Y的任何实例都可以调用Y的任何其他实例的abby()方法。 这个问题让我有点困惑。 据我所知,你可以在同一个类(或子类)的任何变量上调用protected方法。 您不能在变量上调用它,层次结构中的变量比您更高(例如,您实现的接口)。 例如,您不能仅仅因为inheritance它而克隆任何对象。 但问题没有说明变量类型,只涉及实例类型。 我有点困惑,回答“真实”。 书中的答案是 假。 从不同包中的超类inheritance受保护方法的对象可以在自身上调用该方法,但不能在同一类的其他实例上调用该方法。 这里没有关于变量类型的内容,只有实例类型。 这很奇怪,我不明白。 谁能解释一下这里发生了什么?

从另一个不同包的实例的子类调用protected方法

我想从提供此受保护方法的类的子类中调用另一个实例的受保护方法。 请参阅以下示例: public class Nano { protected void computeSize() { } } public class NanoContainer extends Nano { protected ArrayList children; } public class SomeOtherNode extends NanoContainer { // {Nano} Overrides protected void computeSize() { for (Nano child: children) { child.computeSize(); // << computeSize() has protected access in nanolay.Nano } } } javac告诉我, computeSize() has […]

受保护/公共内部类

有人可以向我解释一下protected / public 内部课程之间的区别是什么? 我知道public内部课程应尽可能避免(如本文所述 )。 但据我所知,使用protected或public修饰符之间没有区别。 看看这个例子: public class Foo1 { public Foo1() { } protected class InnerFoo { public InnerFoo() { super(); } } } … public class Foo2 extends Foo1 { public Foo2() { Foo1.InnerFoo innerFoo = new Foo1.InnerFoo(); } } … public class Bar { public Bar() { Foo1 foo1 = […]

在inheritance的类中使用私有变量 – Java

需要对私有变量和inheritance有更多的了解。 之前我的理解是,如果一个类中有字段,并且当我inheritance该类时,不受访问限制的字段(私有变量)将存在于inheritance的类中。 但是如果有一个公共g / setter方法,我可以在基类中使用私有变量。 我怎样才能想象一个基类中的私有变量。

我可以覆盖Java中的私有方法吗?

我知道我可以使用reflection来调用私有方法,并获取或设置私有变量的值,但我想覆盖一个方法。 public class SuperClass { public void printInt() { System.out.println(“I am ” + getClass() + “. The int is ” + getInt()); } private int getInt() { return 1; } } public class SubClass extends SuperClass { public static void main(String[] args) { (new SubClass()).printInt(); } public int getInt() { return 2; } } 我希望SubClass的main方法打印出2 […]

Java构造函数的默认访问修饰符

任何人都可以解释默认访问修饰符对于显式无参数构造函数 (以及其他构造函数)的作用吗?