内部类

简介:
内部类:
       在一个类的内部还有另外一个类,称为内部类;
class  外部类 {
         class  内部类 {
         }
}
 
一个内部类的代码:
class Outer{
         private String info = "hello world!!!" ;
         class Inner{
                   public void print(){
                            System.out.println(info) ;
                   }
         };
         public void fun(){
                   new Inner().print() ;
         }
};
public class Demo20{
         public static void main(String args[]){
                   new Outer().fun() ;
         }
};
 
内部类的缺点;
       · 一直提倡要编写简单代码,如果按此代码形式,可以发现如果使用了内部类,则代码形式混乱。
 
内部类的优点:
       将前代码中的内部类拿到外面来,实现同样的功能,代码如下:
class Outer{
         private String info = "hello world!!!" ;
         public void fun(){
                   new Inner(this).print() ;
         }
         public String getInfo(){
                   return this.info ;
         }
};
class Inner{
         private Outer out = null ;
         public Inner(Outer out){
                   this.out = out ;
         }
         public void print(){
                   System.out.println(this.out.getInfo()) ;
         }
};
public class Demo21{
         public static void main(String args[]){
                   new Outer().fun() ;
         }
};
       以上红颜色的部分就是要增加的代码,使用内部类可以方便的访问外部类中的私有属性。如果变为两个类了,则就要互相传递引用了。
       内部类生成之后的*.class文件:Outer$Inner.class
       那么,如果现在要是直接在程序的外部访问内部类的话,就必须使用外部类.内部类,才可以找到内部类。
class Outer{
         private String info = "hello world!!!" ;
         class Inner{
                   public void print(){
                            System.out.println(info) ;
                   }
         };
};
public class Demo22{
         public static void main(String args[]){
                   Outer out = new Outer() ;
                   //  外部类 . 内部类   内部类对象  =  外部类实例 . 内部类实例
                   Outer.Inner in = out.new Inner() ;
                   in.print() ;
         }
};
       除此之外,内部类也可以在一个方法进行定义。
class Outer{
         private String info = "hello world!!!" ;
         //  如果想让方法中定义的内部类,访问此参数,则此参数前加一个修饰   ——  final
         public void fun(final int temp){
                   //  直接在方法中定义内部类
                   class Inner{
                            public void print(){
                                     //  此处,方法中定义的内部类可以直接访问外部类中定义的属性
                                     System.out.println(info) ;
                                     System.out.println(temp) ;
                            }
                   };
                   new Inner().print() ;
         }
};
public class Demo23{
         public static void main(String args[]){
                   new Outer().fun(30) ;
         }
};
 









本文转自 李兴华 51CTO博客,原文链接:http://blog.51cto.com/lixinghua/91241,如需转载请自行联系原作者
目录
相关文章
|
4月前
|
Java 编译器
内部类14
内部类14
23 2
|
8月前
内部类
内部类
30 1
|
8月前
|
Java 编译器
内部类详解
内部类详解
|
Java
内部类(下)匿名内部类,静态内部类的使用
内部类(下)匿名内部类,静态内部类的使用
102 0
|
Java 编译器
你真的了解四种内部类吗
你真的了解四种内部类吗
80 0
|
编译器
神奇的内部类
神奇的内部类
59 0
|
Java
5.2 内部类与外部类的关系:内部类对外部类的引用
5.2 内部类与外部类的关系:内部类对外部类的引用
172 0
JavaN种内部类
内部类的使用场景、作用: 当一个事物的内部,还有一个部分需要一个完整的结构进行描述,而这个内部的完整的结构又只为外部事物提供服务,那么整个内部的完整结构可以选择使用内部类来设计。 内部类通常可以方便访问外部类的成员,包括私有的成员。
89 0
|
Java
java中的四种内部类详解(成员类内部类,静态内部类,局部内部类,匿名内部类)
java中的四种内部类详解(成员类内部类,静态内部类,局部内部类,匿名内部类)
157 0
|
Java
四种内部类你都了解了吗?
四种内部类你都了解了吗?
84 0