一个类内部包含另一个类
身体与心脏
分类:
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.变量名
网友评论