A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 紫夜灵魂 中级黑马   /  2015-7-7 18:05  /  396 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 紫夜灵魂 于 2015-7-7 19:40 编辑

局部内部类,能不能再其他外部类里调用?除了调用这个类的外部类的方法外,怎么调用?能直接new出来么
  1. package com.itheima;

  2. public class Outer{
  3.         public void fun(){
  4.                 System.out.println("外部类");
  5.                 class Inner2{
  6.                         public void fun(){
  7.                                 System.out.println("局部内部类");
  8.                         }
  9.                 }
  10.                 new Inner2().fun();
  11.         }
  12.         static class Inner{
  13.                 public static String a = "dsd";
  14.                 public void fun(){
  15.                         System.out.println("内部类");
  16.                 }
  17.         }
  18.         public static void main(String[] args) {
  19.                         //new Outer().new Inner().fun();
  20.                         //new Outer.Inner().fun();
  21.                         //System.out.println(Outer.Inner.a);
  22.                         new Outer().fun();
  23.         }

  24. }

  25. class A{
  26.         
  27. }
复制代码


刚才说的不清数。再说一下,代码中的Inner2类能不能在main方法或者A类中直接调用?new Outer().new Inner2().fun();貌似不行吧!那么怎么调用它?
还有,Inner2()类不能调用Outer类的fun()方法中的局部变量,除非加final.请问为什么,最好用jvm内存分配讲一下!

3 个回复

倒序浏览
在实例化的时候要在该内部类的前边加上外部类。这样的格式。  Outer.Inner  in=new Outer().Inner();没太明白你说的是毛意思,但毕竟内部类也是作为外部类的内部成员,想调用也得给外部类个面子不是吗?要是想用其他的类调用这个方法的话,还不如直接拿出来单独最为一个方法不是吗?
回复 使用道具 举报
Outer.Inner  in=new Outer().Inner();这个能在主函数里调用内部类吧。
回复 使用道具 举报
有些高深,,,,,,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马