黑马程序员技术交流社区

标题: 技术解答关于内部类,怎么去调用内部类,和内部类调用... [打印本页]

作者: 探花    时间: 2014-3-28 20:51
标题: 技术解答关于内部类,怎么去调用内部类,和内部类调用...
本帖最后由 探花 于 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

作者: yanzhendong    时间: 2014-3-28 20:53
求完整代码
作者: 你好!默默    时间: 2014-3-28 21:10
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. };
复制代码

作者: 你好!默默    时间: 2014-3-28 21:11
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. };
复制代码

作者: 你好!默默    时间: 2014-3-28 21:12
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:37
你好!默默 发表于 2014-3-28 21:10
1.使用static可以声明一个内部类, 可以直接在外部调用

嗯 谢谢,很详细




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2