内部类
(定义在类里面的类称之为内部类)
1:生成的字节码文件的文件名称 内部类-> 外部类$内部类
普通内部类
- a:外部类中如何使用内部类的属性以及方法
在外部类中创建内部类对象 调用内部类功能、属性 - b:内部类中使用外部类的属性以及方法
可以直接使用 - c:其它类中调用内部类中的属性和方法:
1:
a:导包 包名.外部类.内部类
b:内部类类型 变量名= new 外部类对象().new 内部类对象
Inner01 in = new Outer01().new Inner01();
2:
外部类.内部类 变量名= new 外部类对象().new 内部类对象
Outer01.Inner01 in = new Outer01().new Inner01();
代码
public class Test01 {
public static void main(String[] args) {
//创建外部类对象
Outer01 out = new Outer01();
out.method();
// 创建inner对象
Outer01.Inner01 in = new Outer01().new Inner01();
int num = new Outer01().num;
}
}
class Outer01{
int num;
public Outer01(){
}
public void method() {
// 使用内部类中的属性
Inner01 in = new Inner01();
in.fun();
System.out.println("outer method");
}
/* private */ class Inner01 {
public Inner01() {
}
public void fun() {
/*
* Outer01 out = new Outer01(); out.method();
*/
method();
System.out.println("Inner fun");
}
}
class Inner02{
public Inner02() {
}
public void fun1() {
//fun();
System.out.println("Inner fun");
}
}
}
静态内部类:
-
什么是静态内部类
通过static修饰的内部类称之为静态内部类 -
a:外部类中如何使用静态内部类的属性以及方法
创建对象,调用对象的属性以及方法 -
b:静态内部类中使用外部类的属性以及方法
创建外部类的对象 调用对象的属性以及方法 -
c:其它类中调用内部类中的属性和方法:
-
1:
a:导包 包名.外部类.内部类
(导包的顺序没有关系,包的目的就是导包)
(静态导入,降低了可读性,不利于阅读)
b:内部类类型 变量名= new 外部类. 内部类对象()
Inner01 in = new Outer02.Inner01(); -
2:
外部类.内部类 变量名= new 外部类. 内部类对象()
Outer01.Inner01 in =new Outer02.Inner01();
代码
public class Test02 {
public static void main(String[] args) {
// 创建对象
Inner01 inner = new Outer02.Inner01();
inner.fun();
}
}
class Outer02{
int num;
public Outer02(){
}
public void method() {
new Inner01().fun();
System.out.println("