成员内部类
内部类分为两种
1.成员内部类
2.局部内部类
这一章节介绍成员内部类
成员内部类定义格式
修饰符 class 外部类名称{
修饰符 class 内部类名称{//}//}
调用方法:
1.间接方式,通过在外部类的方法中,使用内部类,然后main只是调用外部方法即可
- 2.直接方式,公式:
- 外部类名称 对象名=new 外部类名称()
- 外部类名称.内部类名称 对象名=new 外部类名称().new 内部类名称() ;*/
创建一个成员内部类
代码:
public class Body {//外部类
public class Heart{//内部类
public void beat()
{
System.out.println("心脏跳动:蹦蹦蹦");
System.out.println("我叫:"+name);
}
}
private String name;
public Body() {
}无参构造方法
public Body(String name) {
this.name = name;
}//有参构造方法
public void methodbody()//外部类方法
{
System.out.println("外部类方法");
new Heart().beat();//在外部类方法中调用成员内部类的方法!
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
主类
代码:
public class Demo01InnerClass {
public static void main(String[] args) {
Body body=new Body();
body.setName("abc");
body.methodbody();
//公式法。
//无参数的可以直接写成: Body.Heart heart=new Body().new Heart();
Body.Heart heart=new Body("tianshan").new Heart();
heart.beat();
}
}
效果
补充:
关于调用成员内部类和外部内以及成员内部内中局部变量的数据问题:
举例:
代码:
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);//外部成员方法
}
}
}
主类:
代码:
public class Demo02InnerClassMultiName {
public static void main(String[] args) {
Outer.Inner obj1=new Outer().new Inner();
obj1.method();
}
}
显示效果: