java学习之路--内部类

来源:互联网 发布:老师备课软件 编辑:程序博客网 时间:2024/06/08 17:14
1.内部类:


内部类就是在一个类的内部在定义一个类


代码:


public class Outer {
        private String s="hello world";
        
        class Inner{
                public void info(){
                        System.out.println(s);
                }
        
                
        }
        public void fun(){
                new Inner().info();
        }
        
        public static void main(String[] args) {
        
                new Outer().fun();
                
        }


}


这样做的好处是:可以让内部类直接访问外部类的私有属性




其实内部类也可以变为“外部类”


看代码
public class Outer {
        private static String s="hello world";
        
        static class Inner{
                public void info(){
                        System.out.println(s);
                }
        
                
        }
        public void fun(){
                new Inner().info();
        }
        
        public static void main(String[] args) {
        
                new Outer.Inner().info();
                
        }


}
把内部类声明为静态类,这样内部类就变为“外部类”


public class Outer {
        private static String s="hello world";
        
        static class Inner{
                public void info(){
                        System.out.println(s);
                }
        
                
        }
        public void fun(){
                new Inner().info();
        }
        
        public static void main(String[] args) {
        
                new Outer.Inner().info();
                new Inner().info();//输出结果是一样的,因为现在内部类已经变为外部类了。
                
        }


}
结果是一样




外部类也可以实例化来调用内部类的方法


class Outer {
        private  String s="hello world";
        
         class Inner{
             
                public void info(){


                        System.out.println(s);
                }
        
                
        }
 
};


public class InnerTest {
        public static void main(String[] args) {
                   Outer outer=new Outer();//实例化外部对象
                   Outer.Inner in=outer.new Inner();//实例化内部对象
                   in.info();//调用内部类的方法
        }


}


在方法中也可以来声明内部类


class O{
         //方法中内部类想要访问方法的参数,则方法的参数必须是final
        public void fun(final int temp){
                  
                class Inner{//在方法中定义内部类
                
                        public void info(){
                                System.out.println("hello world"+temp);
                        }
                        
                }
                new Inner().info();
        }
}




public class InnerTest1 {
 public static void main(String[] args) {
        
          new O().fun(30);
}
}





原创粉丝点击