Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在另一个类内的类中定义实例对象_Java - Fatal编程技术网

Java 在另一个类内的类中定义实例对象

Java 在另一个类内的类中定义实例对象,java,Java,我创建了两个类,每个类都在不同的包中。。。以下是主包中的类: package Main; public class Main { Public static void main(String [] args ) { .....} } // class in main package class ClassS{ public int publicAtttibute; private int pricatdAttribute; package second; public class

我创建了两个类,每个类都在不同的包中。。。以下是主包中的类:

  package Main; 
public class Main { 
Public static void main(String [] args ) { .....} 
}
// class in main package 
class ClassS{
public int publicAtttibute;
private int pricatdAttribute;
package second; 
public class ClassC{
public static void doSomething(){
ClassD ref = new ClassD(); 

} } 
这是另一个包中的第二个类:

  package Main; 
public class Main { 
Public static void main(String [] args ) { .....} 
}
// class in main package 
class ClassS{
public int publicAtttibute;
private int pricatdAttribute;
package second; 
public class ClassC{
public static void doSomething(){
ClassD ref = new ClassD(); 

} } 

但我不确定这段代码是否使classD及其属性对c类可见,有人能澄清一下吗

您在classC中定义了classD的实例对象,这意味着classD及其所有公共属性对c类不可见。。。。。如果希望ClassD可见,但属性不可见,则可以按如下方式编码:

package other: 
public class ClassC{
public static void visible(){
ClassD ref = new ClassD(); 
ref.publicAttribute = 3; 
ref.privateAttribute=3; 
}}

什么是
classD
?无论如何:ref是一个局部变量。它只在doSomething()方法中可见。这似乎是一个您可以通过在IDE中编译代码轻松回答的问题。要知道
ClassD
中的字段在
ClassC
中是否可访问,您需要知道它们是私有的、公共的、包私有的还是受保护的;以及
ClassC
ClassD
是否在同一个包中。由于您没有向我们显示
ClassD
的代码,我们只能猜测这些字段是否可以访问。然而,正如jingx指出的,您的IDE知道!你确定吗?我认为这是不对的。我也很难让你的代码正常工作。