Java内部类三部曲之成员内部类

来源:互联网 发布:淘宝宅腐仓 编辑:程序博客网 时间:2024/06/05 19:04


public class InnerDemo {
/**
* 内部类(成员、静态、匿名、局部内部类)就是将一个类定义在另一个类的内部 特点:
* 内部类可以很好的实现隐藏,可是使用protect、private修饰符 内部类可以直接访问外部类的所有成员,包括私有的成员
* 反之,外部类不能直接访问内部类的成员,必须首先要建立内部类的对象才可以访问 间接实现多继承,避免修改接口而实现同一个类中两种同名方法的调用
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// 创建外部类对象
Outer1 outer = new Outer1();
// 创建内部类的对象
Outer1.MemberInner inner = outer.new MemberInner();
// 调用内部类的方法打印
inner.innershow();
// outer.outershow();
}


}


class Outer1 {
private String name = "张三";
private int num1 = 10;


public void outershow() {
System.out.println(name);
System.out.println(num1);


// 创建内部类
// MemberInner inner=new MemberInner();
// inner.innershow();
// 外部类不能直接访问内部类的成员
// System.out.println(num2);
// innershow();
}


public class MemberInner {
/**
* 成员内部类属于外部类的实例成员 成员内部类可以使用public、private、default、protect权限修饰符。
* 在成员内部类中访问外部类的成员方法和属性,要使用“外部类名.this.成员方法”和“外部类名.this.成员属性”的形式
* 创建成员内部类的实例使用“外部类名.内部类名 实例名=外部类实例名.new 内部类构造方法(参数)的形式”
*/
private String name = "李四";
private int num2 = 20;


public void innershow() {
System.out.println(name);
System.out.println(num2);
// 访问外部类里面私有的属性
System.out.println(Outer1.this.name);
// 先在内部类里面找,找不到再去外部类找,规范写法要加外部类.this
System.out.println(num1);
// 访问外部类里面方法
// Outer1.this.outershow();


}
}
}
原创粉丝点击