一、简要介绍
what?
成员内部类定义在在 outer类 成员属性 的位置,属于类成员的内部类。
how?
1 | class Outer{ |
二、特点
说明:成员内部类定义在在 outer类 成员属性 的位置,并且没有 static 修饰。
作用域问题:
在 成员内部类 中可以随意访问 outer类 中的内容,outer类也可以使用 成员内部类。
成员内部类访问 outer类 的属性。
- 直接使用属性名
- ==—->包括private属性–>因为在同一个类中==
- ==就近原则==>如果外部类的属性成员名字 和 内部类相同
- 通过==外部类.this.属性==来访问外部类的成员
外部类的成员使用成员内部类
- ==同样包括 private 属性==
1
2
3
4
51.创建内部类的对象
neinner inner = new inner();
2.使用 inner.xx即可
System.out.println(inner.name);
外部其他类–访问—->成员内部类
外部类名.成员内部类 xxx =new 外部类对象.new 成员内部类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class memberClass_1 {
public static void main(String[] args) {
Outer outer = new Outer();
outer.print();
//外部其他类访问成员内部类的两种方法
//1.使用外部类的对象创建--->成员内部类也是外部类对象的一个成员。
Outer.inner inner = outer.new inner();
inner.innerprint();
//2.在外部类中创建一个方法--->返回成员内部类对象
Outer.inner inner1= outer.getinnerInstace();
inner1.innerprint();
}
}
class Outer{
private String outerName="我是一个外部类的私有属性";
class inner{
private String name="我是一个内部类的私有属性";
void innerprint(){
System.out.println(outerName);
}
}
void print(){
inner inner = new inner();
System.out.println(inner.name);
inner.innerprint();
}
public inner getinnerInstace(){
return new inner();
}
}
可以添加任意修饰符(public、protected、默认、private),因为它的地位就是==一个成员==