203/204成员内部类的使用和内部类的同名变量访问
成员内部类的使用
如何使用成员内部类?有两种方式:
1.间接方式:在外部类的方法当中,使用内部类;然后main只是调用外部类的方法。
2.直接方式,公式:
类名称对象名= new类名称();
【外部类名称.内部类名称对象名= new外部类名称().new内部类名称();】
public static void main(String[] args) {
Body body = new Body(); //外部类的对家
//通过外部类的对象,调用外部类的方法,里面间接在使用内部类Heart
body .methodBody();
System.out.println("=====================");
//按照公式写:
Body . Heart heart = new Body( ).new Heart( );
heart.beat();
}
内部类定义格式如下:
修饰符 class 外部类名称{
修饰符 class 内部类名称{
//....
}
//...
}
使用成员内部类的两种方式:
1.间接使用:在外部类的方法中使用内部类,然后main只是调用外部类的方法
2.直接使用:
外部类名称.内部类名称 对象名=new 外部类名称(). new 内部类名称();
注意:内用外,随意访问,外用内,需要使用内部类对象
public class Body {
public void methodBody(){
System.out.println("外部类的方法");
Heart h=new Heart();
h.beat();
}
public class Heart{ //内部类
public void beat(){
System.out.println("心脏跳动砰砰砰");
}
}
}
public class DemoInnerClass {
public static void main(String[] args) {
Body one=new Body();//外部类的对象
//通过外部类的对象,调用外部类的方法,间接使用
one.methodBody(); //间接使用
Body.Heart xin=new Body().new Heart();//直接访问
xin.beat();
}
}
内部类的同名变量访问
如果出现了重名现象,那么格式是:外部类名称.this .外部类成员变量名
public class Outer {
int num = 10; //外部类的成员变量
public class Inner {
int num = 20;//内部类的成员变量
public void methodInner() {
int num = 30;//内部类方法的局部变量
System.out.println(num); //局部变量,就近原则
System.out.println(this.num); //内部类的成员变量
System.out.println(Outer.this.num); //外部类的成员变量
}
}
public static void main(String[] args) {
//外部类名称.内部类名称对象名= new外部类名称( ) .new内部类名称();
Outer.Inner obj = new Outer().new Inner();
obj.methodInner();
}
}