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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 探花 于 2014-3-28 20:58 编辑

请高手分析如下代码,
  1. <div class="blockcode"><blockquote>class  Outside {
  2.                 int  num  = 100 ;
  3.               public void method() {
  4.                final int x = 10;
  5.           class Inner {
  6. public void method () {
  7. System.out.println (num) ;
  8. }
  9. }
  10. Inner i  =  new Inner();
  11. i.method();
  12. }

  13. public static void show() {
  14. class Inner {
  15. public void print () {
  16. System.out.println(num);
  17. }
  18. }
  19. Inner i = new Inner();
  20. i.print();
  21. }
复制代码

请高手分析这个代码有没有错误,能不能访问外部的方法,主要是想调用外部的方法,最好能给写一下注释,有错的地方给改正一下。
为什么上面定义了Inner 下面的方法还能定义Inner .....求高手指导,,:handshake

5 个回复

倒序浏览
求完整代码
回复 使用道具 举报
1.使用static可以声明一个内部类, 可以直接在外部调用
  1. class Outer{                // 定义外部类
  2.         private static String info = "hello world" ;        // 定义外部类的私有属性
  3.         static class Inner{        // 使用static定义内部类为外部类
  4.                 public void print(){                                // 定义内部类的方法
  5.                         System.out.println(info) ;                // 直接访问外部类的私有属性
  6.                 }
  7.         };
  8.         public void fun(){                                                // 定义外部类的方法
  9.                 new Inner().print() ;                                // 通过内部类的实例化对象调用方法
  10.         }
  11. };
  12. public class InnerClassDemo03{
  13.         public static void main(String args[]){
  14.                 new Outer.Inner().print() ;                                        // 调用外部类的fun()方法
  15.         }
  16. };
复制代码

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 赞一个!

查看全部评分

回复 使用道具 举报
2.不使用statc声明一个内部类 ,使外部调用
  1. class Outer{                // 定义外部类
  2.         private String info = "hello world" ;        // 定义外部类的私有属性
  3.         class Inner{        // 定义内部类
  4.                 public void print(){                                // 定义内部类的方法
  5.                         System.out.println(info) ;                // 直接访问外部类的私有属性
  6.                 }
  7.         };
  8.         public void fun(){                                                // 定义外部类的方法
  9.                 new Inner().print() ;                                // 通过内部类的实例化对象调用方法
  10.         }
  11. };
  12. public class InnerClassDemo04{
  13.         public static void main(String args[]){
  14.                 Outer out = new Outer()        ;                        // 外部类实例化对象
  15.                 Outer.Inner in = out.new Inner() ;        // 实例化内部类对象
  16.                 in.print() ;                                                // 调用内部类的方法
  17.         }
  18. };
复制代码
回复 使用道具 举报
3.在方法中定义内部类 ,使外部调用
  1. class Outer{                // 定义外部类
  2.         private String info = "hello world" ;        // 定义外部类的私有属性
  3.         public void fun(final int temp){                // 定义外部类的方法
  4.                 class Inner{                                                // 在方法中定义的内部类
  5.                         public void print(){                                // 定义内部类的方法
  6.                                 System.out.println("类中的属性:" + info) ;                // 直接访问外部类的私有属性
  7.                                 System.out.println("方法中的参数:" + temp) ;
  8.                         }
  9.                 };
  10.                 new Inner().print() ;                                // 通过内部类的实例化对象调用方法
  11.         }
  12. };
  13. public class InnerClassDemo05{
  14.         public static void main(String args[]){
  15.                 new Outer().fun(30) ;        // 调用外部类的方法
  16.         }
  17. };
复制代码
回复 使用道具 举报
你好!默默 发表于 2014-3-28 21:10
1.使用static可以声明一个内部类, 可以直接在外部调用

嗯 谢谢,很详细
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马