Java学习(内部类)

1. 成员内部类

  1)格式:

  修饰符 class 类名称

  {

    修饰符 class 类名称

    {

      //......

    }

    //...... 

  }

  2)内部类调用包含该内部类的外部类类成员变量与方法随意访问,反过来则需要使用内部类对象调用

  3)使用内部类的方法:

    间接方法:在外部类的方法中,使用内部类调用其中的方法与变量。

    直接方法:外部类名.内部类名称 对象名 = new 外部类名称().new 内部类名称()

  4)访问重名的外部类成员变量

    出现重名情况,可以用:外部类名.this.外部类成员变量名称   

public class Outer{
    int num = 10;//外部类成员变量
    public class Inner{
        int num = 20;//内部类成员变量
        public void method(){
            int num =30;//内部类局部变量
            System.out.println(num);//输出内部类局部变量,就近原则
            System.out.println(this.num);//输出内部类成员变量
            System.out.println(Outer.this.num);//输出外部类成员变量
        }
    }
}

 

2. 局部内部类

  格式:

修饰符 class 外部类名称{

  修饰符 返回值类型 外部类方法名称(参数列表){

    class 局部类名称{

      //......

    }

  }

}

3. 类定义时的权限修饰符规则

  1)外部类:public/(default)

  2)成员内部类:public/protected/(default)/private

  3)局部内部类:什么都不用写

4. 匿名内部类

如果接口的实现类(或者父类的子类)只需要使用一次,就可以省略该类的定义,改为使用匿名内部类

接口名称 对象名 = new 接口名称(){

  //覆盖重写接口中所有抽象方法

}

省略了实现类/子类名称,匿名对象则是省略了对象名称

猜你喜欢

转载自www.cnblogs.com/NimaBlue/p/9996102.html
今日推荐