zoukankan      html  css  js  c++  java
  • java基础之内部类

    内部类的主要分类有:1.成员内部类,2.局部内部类,3.静态内部类,4.匿名内部类。下面一一进行说明:
    1.成员内部类。
    作为外部类的一个成员存在,可以访问外部类的所有属性和方法(privated),实例化过程:作为外部类的一个成员存在,你想一般访问一个类的成员变量,必须先实例化该类,然后再进行访问。所以访问内部类是必须先实例化外部类。
    举例:

    package day03; 
    /** 
     * @author wangpei 
     * @version 
     *创建时间:2017年3月2日 上午9:16:38 
     * 类说明 
     */
    public class Outer {
        private int a;
        public void printOuter(){
            System.out.println("这是Outer");
        }
        class Inner{
            public void printInner(){
                System.out.println("这是Inner");
            }
            public int getA(){
                return Outer.this.a;//return a;
            }
    
    
        }
        public static void main(String[] args) {
            Outer ot=new Outer();
            Outer.Inner a=ot.new Inner();
            System.out.println(a.getA());
    
        }
    
    }
    

    注意:当外部类与内部类中的变量重名时,外部内中的变量会被隐藏,在内部类里边调用时,肯定调用的是内部类里边的变量需要通过Outer.this.变量名来访问外部类中的变量
    举例:

    package day03; 
    /** 
     * @author wangpei 
     * @version 
     *创建时间:2017年3月2日 上午9:16:38 
     * 类说明 
     */
    public class Outer {
        private int a=1;
        public void printOuter(){
            System.out.println("这是Outer");
        }
        class Inner{
            int a=5;
            public void printInner(){
                System.out.println("这是Inner");
            }
            public int getA(){
                return a;//Outer.this.a;
            }
    
    
        }
        public static void main(String[] args) {
            Outer ot=new Outer();
            Outer.Inner a=ot.new Inner();
            System.out.println(a.getA());
    
        }
    
    }
    

    2.局部内部类
    局部内部类是在方法内部定义的类,相当于方法的局部变量。
    注意:局部内部类是在方法内部进行实例化,然后通过实例化外部类来调用该方法达到调用内部类的目地。

    package day03; 
    /** 
     * @author wangpei 
     * @version 
     *创建时间:2017年3月2日 上午9:16:38 
     * 局部内部类
     */
    public class Outer {
        //private int a=1;
        public void printOuter(){
            int a=5;
            class Inner{
                public void getA(){
                    System.out.println(a+1);
                }
            }
            Inner In = new Inner();
            In.getA();
        }
    
        public static void main(String[] args) {
            Outer ot=new Outer();
            ot.printOuter();
    
    
        }
    
    }
    

    3.静态内部类
    使用static修饰的内部类。
    <1>静态内部类可以直接被外部类调用,而不用实例化外部类。
    <2>静态内部类不能访问外部类中非静态的成员和方法。

    package day03; 
    /** 
     * @author wangpei 
     * @version 
     *创建时间:2017年3月2日 上午9:16:38 
     * 类说明 
     */
    public class Outer {
        private static int a=0;
        public void printOuter(){
            System.out.println("这是Outer");
        }
         static class Inner{
            public void printInner(){
                System.out.println("这是Inner");
            }
            public int getA(){
                //return a;//此处这样访问会报错,必须将设置为static
                return a;
    
            }
    
    
        }
        public static void main(String[] args) {
            //Outer ot=new Outer();
            Outer.Inner a=new Outer.Inner();//直接实例化,不用通过实例化Outer再实例化
            System.out.println(a.getA());
    
        }
    
    }
    

    4.匿名内部类
    主要是在定义监听器时使用,因为java类实现的是单继承,定义匿名类,可以对多继承做补充。
    注意:匿名内部类不可以被static,访问修饰符修饰。匿名内部类没有构造方法。

  • 相关阅读:
    ABAP接口用法
    监听textarea数值变化
    The first step in solving any problem is recognizing there is one.
    Wrinkles should merely indicate where smiles have been.
    God made relatives.Thank God we can choose our friends.
    Home is where your heart is
    ABAP跳转屏幕
    Python 工具包 werkzeug 初探
    atom通过remote ftp同步本地文件到远程主机的方法
    Mongodb学习笔记一
  • 原文地址:https://www.cnblogs.com/wangxiaopei/p/8551244.html
Copyright © 2011-2022 走看看