内部类

Posted fax1996

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内部类相关的知识,希望对你有一定的参考价值。

1.成员内部类

例一

public class Test002 {
    public static void main(String[] args) {
        //1.第一种创建方法
         Cricle c = new Cricle(5);
//        Cricle.Draw d = c.new Draw();
//        d.drawShape();
        //2.第二种,通过方法返回一个内部类对象
        Cricle.Draw d2 = c.getDetDrawInstance();
        d2.drawShape();
    }
}

class Cricle{//外部类
    private double radius = 0;
    public static int count = 1;
    int a = 0;
    
    public Draw getDetDrawInstance() {
        return new Draw();
    }
    
    
    public Cricle(double radius) {
        this.radius = radius;
        //在外部类中访问内部类的成员需要先创建内部类对象
        //new Draw().drawShape();
        
    }
    
    class Draw{//内部类
        public void drawShape() {
            int a = 2;
            System.out.println(radius);//访问外部类的Private成员
            System.out.println(count);//访问外部类的静态成员
            System.out.println(a);//访问内部类里的局部变量
            System.out.println(Cricle.this.a);//访问成员变量
        }
    }
    
}

例二

public class Test003 {

    public static void main(String[] args) {
        Demo d = new Demo(new Outer2());

    }

}
class Outer2{
    Outer2(){
        System.out.println("outer2");
    }
    class Inner2{
        Inner2(){
            System.out.println("Inner2");
        }
    }
}
//继承 实例内部类
class Demo extends Outer2.Inner2{
    Demo(Outer2 o){
        o.super();
        System.out.println("Demo");
    }
}

 

 

 

2.局部内部类

局部内部类的访问仅限于方法内或者该作用域内

以上是关于内部类的主要内容,如果未能解决你的问题,请参考以下文章

片段 - 全局视图变量与本地和内部类侦听器和内存泄漏

为啥片段类应该是公开的?

ForegroundService没有从片段开始?

在内部片段类中使用ListView

自定义无内存泄漏的Handler内部类

底部导航 如何从片段内部更改片段