一、简要介绍
what?
定义在 outer类 的==成员位置==,并且有 static 修饰。
how
1 | class Outer{ |
二、特点
使用 static 修饰,符合 static 修饰的原则。
- 只能访问 外部类的 ==所有静态成员==,无法访问非静态。
可以添加任意的 访问修饰符 (public、protected、private、默认)
作用域的问题
外部类 –>访问 –>静态成员 [访问方式:1. 创建对象 2.使用方法名访问。]
1
2
31.创建对象
2.对象名.xxx内部成员—> 访问 —> 外部成员 [访问方式:直接访问所有静态成员]
- ==就近原则==。如果重名,使用 ==外部类.属性名==进行访问。
1
2
3
4
5
6
7
8
9
10
11
12
13class outer{
static String Staticname="外部类的属性";
String name="外部类非静态属性";
static class staticInner{
static String Staticname="静态内部类的属性";
void print(){
System.out.println(Staticname);
System.out.println(outer.staticname);
}
}
}外部其他类 使用静态内部类。
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
33
34
35
36package com.jhfuture.innerclass.staticInnerclass;
public class staticner {
public static void main(String[] args) {
//其他外部类访问静态成员内部类的三种方法
//1.使用 外部类名.静态类名 方法创建
outer.staticInner staticInner = new outer.staticInner();
staticInner.print();
//2.在外部类里 创建一个方法/静态方法 使用外部类对象名/外部类名 . 方法名来创建。
//2.1
outer outerObject = new outer();
outer.staticInner staticInner1 = outerObject.getstaticInnerInstace_commonly();
staticInner1.print();
//2.2
outer.staticInner staticInner2= outer.getstaticInnerInstace_StaticVersion();
staticInner2.print();
}
}
class outer{
static String Staticname="外部类的属性";
String name="外部类非静态属性";
static class staticInner{
void print(){
System.out.println(Staticname);
}
}
staticInner getstaticInnerInstace_commonly(){
return new staticInner();
}
static staticInner getstaticInnerInstace_StaticVersion(){
return new staticInner();
}
}