/*
内部类:一个类定义在另一个类的内部就是内部类
内部类的命名规则:
外部类$内部类 这种命名方式可以确定内部类属于那个外部类
内部类的分类:
1. 成员内部类
--访问方式;
方式一: 在外边类中提供一个方法实例化内部类,通过对象来调用内部类的成员;
方式二: 在其他类中创建内部内的对象,然后通过该对象来访问
out.inner i1 = new Ouer().new inner();
注意:如果是静态内部类,那么在其他类中实例化内部类的方式为:
outer.inner i = new outer.new inner();
--内部类的好处:
1. 内部类可以直接访问外部类的所有成员;
-- 应用场景
1. 我们在描述一类事物的时候,如果发现这类事物还存在比较复杂的部分,并且该部分与其他部分存在访问关系,
那么可以把复杂的这部分描述为一个内部类:
-- 使用规则:
1. 如果内部类和外部类存在同名的成员变量,那么内部类的方法访问的是内部类的成员变量:
2. 如果内部类和外部类存在同名的成员变量的时候,那么可以使用【外部类.this.成员变量名 】 来指定访问外部变量名
3. 内部类如果是私有的,只能通过外部类的访问,而不能通过其他类中直接访问;
4. 成员内部类一旦出现了内部成员,俺么该类也必须使用static来修饰;
原因:静态成员是不需要依赖对象而存在的;
2. 局部内部类
*/
class Outer
{
int x = 10;
class Inner
{
int y;
int x = 100;
public Inner(int y)
{
this.y = y;
}
public void print()
{
System.out.println("内部类的x值是: " + Outer.this.x);
System.out.println("内部类的y值是: " + y);
}
}
//提供一个外部方法类访问内部类
public void getInner()
{
Inner i = new Inner(10);
i.print();
}
}
class Demo3
{
public static void main(String[] args)
{
Outer.Inner i = new Outer().new Inner(100);
i.print();
}
}