我P4在默认包中有类(我知道使用默认包是不好的做法,但现在只是"例如"):
import temp.P2;
public class P4 extends P2 {
public void someMethod() {
P2 p2 = new P2();
// p2.p2default(); // ERROR as expected
p2.p2public();
p2.p2protected(); // ERROR as not expected
}
}
Run Code Online (Sandbox Code Playgroud)
和P2包中的类temp
package temp;
public class P2 {
protected void p2protected() {
...
}
public void p2public() {
...
}
void p2default() {
...
}
}
Run Code Online (Sandbox Code Playgroud)
从访问控制机制,我希望
P4- 扩展后P2,应该能够在protected导入该包的命名空间后,甚至从包外部看到其超类的成员.
我错过了什么?
TIA.
据到最后的音符在这里:
" 如果将原始类型或字符串定义为常量并且该值在编译时已知,则编译器将代码中的常量名称替换为其值.这称为编译时常量.如果值为不断在外界的变化(例如,如果立法规定PI实际上应该是3.975),您将需要重新编译使用此常量来获取当前值的类. "
假设我在中定义了一个公共常量PI(public static final double PI=3.14)class A,并PI从内部使用了这个常量class B.
所以 - 通过上面的规范,如果我将PI3.14 的值更改为3.0 in class A,我必须重新编译class B以获得该更改的效果class B.
这里的Q是 - 上述规范中"常数"的定义究竟是什么?它是final关键字吗?static在这种情况下,任何字段成员"限定"为常量吗?这里的非静态字段成员将脱离上下文 - 它们的值在运行时分配(?)
TIA.
// ===========================
编辑:
这里的Q是:什么使编译器决定在编译时绑定值.请问static关键字全部由自己做这个工作.或者还有其他什么东西.
// =======================
参考下面的快速回答,不断投票:
同一页面上的行:
" 静态修饰符与最终修饰符结合使用,也用于定义常量.最终修饰符表示此字段的值不能更改."
1.)"...... 也用于定义常量......":还有什么定义常量.
2.)"...... 与最终修饰符结合使用 ":final在编译时使值受限是必要的 - 我怀疑它是什么.
可以有一个实现其所有方法的抽象类- 其中没有抽象方法.
例如.:
public abstract class someClass {
int a;
public someClass (int a) { this.a = a; }
public void m1 () { /* do something */ }
private void m2 () { /* do something else */ }
}
Run Code Online (Sandbox Code Playgroud)
具有这样一个抽象类的优点(如果有的话)与具体相同的类相比有什么优势呢?
我能想到的是,当我将其声明为抽象时,它将不会被实例化.但是,通过使其具体化并且其构造函数是私有的,我可以产生相同的效果.
TIA.
// ==================
编辑:我能想到的另一个用途:
它可能会扩展另一个抽象类或实现一个接口而不实现该类的抽象方法 - 尽管它正在实现它自己的所有方法.无论它值多少钱.
此Q用于验证.
当文字值以0开头时,JDK 8似乎正在处理八进制:
System.out.print(011);
Run Code Online (Sandbox Code Playgroud)
印刷9,和
System.out.print(08);
Run Code Online (Sandbox Code Playgroud)
给出一个检查错误.
这不是在文档中 - 还是(?)
这是jdk8中的新功能吗?如果是这样的话 - 在八进制的情况下是否有一些细节,除了HEX和二进制的那些?
TIA
// =============================
编辑:
Q是关于JDK处理八进制 - 从什么时候开始.dosc仅显示HEX和二进制.
第二个代码行是为了显示它的八进制JDK,当值前面有一个0时.
在Java中Thread,该方法currentThread()
返回"当前正在执行的线程"的内存引用."当前正在执行的线程"这里是调用它的线程currentThread().
我想知道是否有一个例外情况,即是否currentThread()返回一个其他线程而不是调用它.
例如:假设,在main方法中,我正在调用Thread.currentThread().toString()它 - 它返回线程的toString()表示main.
问题是,是否存在返回内存中运行的其他线程的情况?
我想不出一个.currentThread()这是在main线程上执行- 因此无论何时它正在运行,它都是它正在执行的主线程空间.除非有一些滑倒,否则我看不出它会怎样.
currentThread() 是原生的 - 可以在代码中看到这些.