美文网首页
Java基础-12 内部类

Java基础-12 内部类

作者: 往南渡 | 来源:发表于2017-03-24 17:30 被阅读0次
    java-12.jpg

    内部类: 在一个类的内部定义另外一个类,那么另外一个类则称作为内部类 。

    内部类的class文件名: 外部类$内部类.class

    成员内部类:

    成员内部类的访问方式:
            方式一: 在外部类提供一个方法创建内部类的对象进行访问。
            
            方式二:在其他类中直接创建内部的对象进行访问。
                    格式: 
                        外部类.内部类  变量名  = new 外部类().new 内部类();
        
            注意:静态成员内部类在其他类创建对象的格式:
                        外部类.内部类  变量名  =  new 外部类.内部类();
    

    内部类的好处: 直接访问外部类的所有成员。

    应用场景: 我们在描述A事物的时候,A事物内部还维护了另外一个B事物,
    而且B事物还必须 要访问到A事物的成员,那么这时候我们就可以使用内部类描述B事物。

    图形化界面编程

     成员内部类要注意的细节:
         1. 内部类可以直接访问外部类的所有成员。
         2. 内部类与外部类存在同名的成员时, 在内部类中默认是访问内部类的成员, 可以通过"外部类.this.成员"进行指定访问外部类的成员。
         3. 私有的成员内部类只能通过在外部类提供一个公共的方法进行访问。 在其他类无法访问。
         4.  如果一个成员内部类定义了静态的成员,那么该类也必须使用static修饰。
    
        疑问:为什么如果一个成员内部类定义了静态的成员,那么该类也必须使用static修饰 ???
            
            静态的成员变量是不依赖对象而存在的
    

    //外部类 new Outer().Inner.x
    class Outer{

     String name = "外部类";
    //成员内部类
    static  class Inner{
        static  int x = 10;
        String name = "内部类";
        public void print(){
            System.out.println("这个是内部类的print方法:"+name); //默认访问时内部类,
        }
    }
    
    //外部类
    public void newInstance(){
        Inner inner = new Inner();
        inner.print();
    }
    

    }

    //其他类
    class Demo
    {

    public static void main(String[] args) 
    {
        
        Outer outer = new Outer();
        outer.newInstance();
        System.out.println("x:"+Outer.Inner.x);
        //创建内部类对象
        Outer.Inner inner = new Outer.Inner();
        inner.print();
    }
    

    }

    相关文章

      网友评论

          本文标题:Java基础-12 内部类

          本文链接:https://www.haomeiwen.com/subject/xdoxottx.html