Java匹马行天下之JavaSE核心技术——面向对象 (6)

成员内部类声明在类中,方法体、代码块之外。和成员变量、成员方法在同一级别。

语法:
public class Out {
      //成员内部类
      public class Inner{
      }
}

实例化成员内部类:
        //先实例化外部类
        Out o = new Out();
        //使用外部类对象,再实例化内部
        Out.Inner inner = o.new Inner();

实例:
public class Out {
    //成员变量
    public int a = 1;

    //成员内部类
    public class Inner{
        public int a = 2;
        //内部类的成员方法
        public void print(){
//执行内部类中的实例变量a
            System.out.println(a);
//执行外部类的实例变量a
            System.out.println(Out.this.a);    
}
    }
}

静态内部类

声明的位置参考成员内部类。

语法:
public class Out {
    //静态内部类
    public static class Inner{

    }
}

实例化静态内部的对象:
Out.Inner inner = new Out.Inner();

实例:
public class Out {
    public static int a = 1;
    public int b = 3;
    //静态内部类
    public static class Inner{
        public static int a = 2;
        public static void print(){
            //执行静态内部的静态变量
            System.out.println(a);
            //执行外部类的静态变量
            System.out.println(Out.a);
            //执行外部类的实例变量
            Out o = new Out();
            System.out.println(o.b);
        }
    }
}

局部内部类

声明在方法体或代码块内,作用域范围在方法体或代码块内。

语法:
public class Out {
    public void method(){
        //局部内部类
        class Inner{
            //局部内部类的成员方法
            public void print(){
                System.out.println("局部内部类");
            }
        }
        //实例化局部内部类
        Inner inner = new Inner();
        inner.print();
    }
}

执行局部内部类的方法:
Test类:
public static void main(String[] args) {
        Out o  = new Out();
        o.method();
}

匿名内部类

声明位置同局部内部类一样,前提条件:必须继承一个类或实现一个接口,匿名内部类的声明和实例化对象是同时进行的;

一般使用于获得抽象类或接口对象;

语法:
父类名/接口名  对象名 =  new  父类名/接口名(){
        //匿名内部类成员
};

实例:
父类
public class Father {
}

匿名内部类:
public class Out {
    public void method(){
        //匿名内部类对象
        Father f = new Father(){
        };
    }
}
此篇完

这一篇对新手是不友好的,不过对一些一知半解的或者想复习的朋友可能帮助更大。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyxfws.html