Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.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_Class_Scope - Fatal编程技术网

Java 外部类可以调用其内部类的方法吗?

Java 外部类可以调用其内部类的方法吗?,java,class,scope,Java,Class,Scope,我有代码在用户单击特定按钮时建立服务器连接。我创建了一个内部类来监听动作。在内部类中的单个方法中,我还建立了前面提到的服务器连接 我的问题是,套接字连接只能在“内部”类中使用吗?或者,外部类是否可以继续与所述服务器进行通信 但是,我知道内部类对外部类具有不受限制的访问权限(就好像它是外部类一样。我的问题是相反的。在内部类上声明的所有方法都是可访问的……无论它们是声明为公共的还是…私有的 如果内部方法是静态的,那么它们总是可以被外部类中的代码调用。您只需要用内部类名限定方法名 否则,外部类代码需

我有代码在用户单击特定按钮时建立服务器连接。我创建了一个内部类来监听动作。在内部类中的单个方法中,我还建立了前面提到的服务器连接

我的问题是,套接字连接只能在“内部”类中使用吗?或者,外部类是否可以继续与所述服务器进行通信



但是,我知道内部类对外部类具有不受限制的访问权限(就好像它是外部类一样。我的问题是相反的。

在内部类上声明的所有方法都是可访问的……无论它们是声明为
公共的
还是…
私有的

如果内部方法是
静态的
,那么它们总是可以被外部类中的代码调用。您只需要用内部类名限定方法名

否则,外部类代码需要内部类实例的引用来调用其上的方法(但这是正常的)



(如果你问一个内部类是否可以调用外部类上的方法,那就有点复杂了。上面的大部分都适用,但是如果内部类不是
静态的
,它也可以通过
this
调用外部类上的实例方法)

创建一个这样的实例并访问你想要的:

OuterClass.InnerClass innerObject = outerObject.new InnerClass();

是的,您可以实现下面的示例代码

    currentDateMinutes=getDateAndTime();
    System.out.println("DATE & TIME:"+new JobSchedulerUtil().new TaskScheduler(currentDateMinutes).timeNow()); 

上面的代码JobSchedulerUtil类是具有getDateAndTime()方法的外部类,以及具有timeNow()的内部类TaskScheduler方法。

是的,外部类的实例可以调用内部类的实例上的方法。是的,我在发布我的答案时误解了这个问题。当然你可以这样做。你甚至可以。旁注:“有效java”中有一个关于嵌套类的精彩章节Joshua Bloch。内部类方法是私有类型的,所以我很担心。我现在明白了。如果基本上双向无限制访问,那么内部类的目的是什么?
外部类可以访问内部类的私有方法。
-这是设计造成的,还是有具体原因?这是设计造成的。(强)封装边界是最外层的类。