package javademo;
//类的分装就是让属性不对外开放,需要通过方法来对属性操作;
public class TelePhone {
private float seceen;
private float cpu;
private float mem;
private int a = 33;//外部类的私有属性
static int b = 1;//外部类的静态变量;
public class Inner{
int b = 2;//内部类的成员属性
public void text()
{
System.out.println("访问外部类中的a:"+a);
System.out.println("访问内部类中的b:"+b);
System.out.println("访问外部类中的A:"+TelePhone.this.a);//访问外部类的成员属性a
}
}
public static void main(String[] args)
{
// 测试成员内部类
//外部类不能直接访问内部类的成员方法;
TelePhone Tel = new TelePhone();//创建外部类对象,对象名为O
Inner Inte = Tel.new Inner();//使用外部类对象创建内部类对象,对象名为Inte
Inte.text();//调用内部类对象的text方法;
//**
//测试静态内部类
Sinner siner = new Sinner();
siner.text();
//**
//测试方法内部类
Tel.show();
}
/*
* 静态内部类是 static 修饰的内部类,这种内部类的特点是:
* 1、 静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问
* 2、 如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员
* 3、 创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类();
* */
//静态内部类
public static class Sinner
{
int b = 2;//内部类的变量
public void text ()
{
System.out.println("访问外部类的b:"+TelePhone.b);
System.out.println("访问内部类中的b:"+b);
}
}
// 外部类的方法
public void show()
{
final int a = 25;//常量
int b = 13;
// 方法内部类;
class MInner
{
int c = 2;//内部类中的变量;
public void print()
{
System.out.println("访问外部类方法中的常量a"+a);
System.out.println("访问方法内部类方法中的常量c"+c);
}
}
MInner mi = new MInner();
mi.print();
}
//3 方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,
// 即只在该方法内可以使用。
}