相关疑难解决方法(0)

Java中的public,protected,package-private和private有什么区别?

在Java中,有没有关于何时使用每个访问修饰符,即默认明确的规则(包私有)public,protected并且private,同时使classinterface和处理继承?

java private protected public access-modifiers

3004
推荐指数
24
解决办法
201万
查看次数

java - 使用基类实例在派生类中访问的受保护成员

我在派生类中创建了基类的实例,并尝试访问受保护的成员.

我可以直接访问派生类中的受保护成员,而无需实例化基类.

基类:

package com.core;

public class MyCollection {

      protected Integer intg;
}
Run Code Online (Sandbox Code Playgroud)

同一包中的派生类 -

package com.core;

public class MyCollection3 extends MyCollection { 

 public void test(){

  MyCollection mc = new MyCollection();
  mc.intg=1; // Works
 }
}
Run Code Online (Sandbox Code Playgroud)

不同包中的派生类 -

package secondary;

import com.core.MyCollection;

public class MyCollection2 extends MyCollection{ 

 public void test(){
  MyCollection mc = new MyCollection();
  mc.intg = 1; //!!! compile time error - change visibility of "intg" to protected
 }
}
Run Code Online (Sandbox Code Playgroud)

当派生类也在同一个包中但是当派生类在不同的包中时,如何使用基类实例访问派生类中基类的受保护成员?

如果我将受保护的成员标记为"静态",那么我可以使用驻留在不同包中的派生类中的基类实例来访问基类的受保护成员.

java protected access-control

6
推荐指数
1
解决办法
2万
查看次数