如果它的子节点位于不同的包中,为什么我们不能用受保护的构造函数实例化一个类?如果可以访问受保护的变量和方法,为什么同样的规则也不适用于受保护的构造函数?
PACK1:
package pack1;
public class A {
private int a;
protected int b;
public int c;
protected A() {
a = 10;
b = 20;
c = 30;
}
}
Run Code Online (Sandbox Code Playgroud)
PACK2:
package pack2;
import pack1.A;
class B extends A {
public void test() {
A obj = new A(); // gives compilation error; why?
//System.out.println("print private not possible :" + a);
System.out.println("print protected possible :" + b);
System.out.println("print public possible :" + c);
}
}
class C {
public …Run Code Online (Sandbox Code Playgroud) 问:我需要对以下代码的输出进行详细说明...使用runnable接口创建的线程和通过扩展线程类直接创建的线程有什么区别... ???
Q1:
public class BalanceChecker1{
public static void main(String [] args) {
RunnableClass runnableClass=new RunnableClass();
new Thread(runnableClass).start();
new Thread(runnableClass).start();
}
}
class RunnableClass implements Runnable{
Bean bean=new Bean();
public void run(){
synchronized(bean){
bean.incBalance();
}
}
}
class Bean{
private int balance=0;
public void incBalance(){
balance++;
System.out.println(" The thread name "+Thread.currentThread().getName());
System.out.println(" The balance is "+balance);
}
}
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
The thread name Thread-0 The balance is 1 The thread name Thread-1 The balance is 2
Q2:
public class BalanceChecker1{
public …Run Code Online (Sandbox Code Playgroud)