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。内部类方法是私有类型的,所以我很担心。我现在明白了。如果基本上双向无限制访问,那么内部类的目的是什么?外部类可以访问内部类的私有方法。
-这是设计造成的,还是有具体原因?这是设计造成的。(强)封装边界是最外层的类。