java入门 -- 成员内部类

/*

内部类:一个类定义在另一个类的内部就是内部类

内部类的命名规则:

外部类$内部类  这种命名方式可以确定内部类属于那个外部类

内部类的分类:

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();

}

}

你可能感兴趣的:(java入门 -- 成员内部类)