java se 成员内部类

2020-02-16  本文已影响0人  起名字真难难难

一个类内部包含另一个类
身体与心脏
分类:
1、成员内部类
2、局部内部类(匿名内部类

1、成员内部类

修饰符 class 类名称{
      修饰符  class  类名称{
            ...
    }
}

注:
内用外可直接访问,访问private可直接访问
外用内需借助内部类对象

public class Practice {
    private int num1=1;
    public void method1(){
        //外用内借助内部类对象
        Inner inner=new Inner();
        System.out.println(inner.num2);
    }
    public class Inner{
        private int num2=2;
        //内用外可随意访问
        public void method2(){
            System.out.println(num1);
        }
    }
}
如何使用成员内部类?

(1)间接方式:外部类方法中使用内部类,main调用外部类方法

public class MyBody {
    public class MyHeart{
        public void methodIn(){
            System.out.println("内部方法");
        }
    }
    public void methodOut(){
        MyHeart heart=new MyHeart();
        heart.methodIn();
    }
}
public class Demo01InnerClass {
    public static void main(String[] args) {
        MyBody body=new MyBody();间接方法
        body.methodOut();
    }
}

(2)直接方法:

外部类.内部类 对象名=new 外部类().new内部类();
public class MyBody {
    public class MyHeart{
        public void methodIn(){
            System.out.println("内部方法");
        }
    }
    private int num1=5;
    public void methodOut(){
    }
}
public class Demo01InnerClass {
    public static void main(String[] args) {
        MyBody.MyHeart heart=new MyBody().new MyHeart();
        heart.methodIn();
    }
}
内部类重名问题
public class Outer {
    int num=1;
    public class Inner{
        int num=2;
        public void method(){
            int num=3;
            System.out.println(num);
            System.out.println(this.num);
            System.out.println(Outer.this.num);
        }
    }
}

外部类名称.this.变量名

上一篇 下一篇

猜你喜欢

热点阅读