---------------------- android培训 、java培训 、期待与您交流! ----------------------
内部类 :在一个类中建立的类
内不类访问规则:
1 内部类可以直接访问外部类中的成员,包括私有。是因为内部类中有一个外部类的引用:格式 外部类名.this
2 外部类访问内部类需要创立内部类对象
3 外部其他类要直接访问内部类的成员,需创立内部类对象。格式 外部类名字.内部类名字 变量名 = 外部类对象.内部类对象;
4 当内部类在成员位置上,就可以被成员修饰符修饰 比如 private static。 当被static修饰后,只能直接访问外部类中的静态成员
注意:
1 当内部类中定义了静态成员,该内部类必须是静态的。
2 当外部类中的静态方法访问内部类的成员时,内部类也必须是静态的
3 局部内部类不可以被成员修饰符修饰,不能定义静态成员
4 局部内部类可以直接访问外部类中的成员,但是不可以访问它所在的局部中的变量,只能访问被final修饰的局部变量
当描述事物时。事物的内部还有事物,该事物用内部类来描述。因为内部事物在使用外部事物的内容。例如 人体和心脏。
匿名内部类:
1 没有名字的内部类
2 定义匿名内部类的前提: 内部类必须继承一个类或实现接口
3 匿名内部类格式: new父类或接口(){定义子类的内容}。
4 匿名内部类其实就是一个匿名 的子类对象
5 匿名内部类中的方法最好不要超过3个
实例
public class Outer {
public final static int i = 5;
// 成员内部类
class Inner {
int k = i;
public void innerShow() {
// 直接访问外部类成员
System.out.println(k);
}
}
// 当内部类中有静态成员 内部类必须定义为静态
static class Inner3 {
static int y;
}
// 外部类访问内部类需要创建内部类对象
Inner in = new Inner();
public void add() {
System.out.println(in.k);
in.innerShow();
}
public static void show() {
final int y = 9;
// 局部内部类
class InnerShow {
// 可以直接访问外部类的成员
int x = i;
// 只能访问被final修饰的局部变量
int z = y;
public void innerAdd() {
System.out.println(i);
System.out.println(z);
}
}
InnerShow is = new InnerShow();
is.innerAdd();
// 匿名内部类
new FuLei() {
public void save() {
System.out.println("匿名内部类打印");
}
}.save();
}
}
public class Test {
public static void main(String[] args) {
//其他类中直接访问内部类
Outer.Inner oi = new Outer().new Inner();
oi.innerShow();
//Outer o = new Outer();
Outer.show();
}
}
打印结果:
5
5
9
匿名内部类打印
---------------------- android培训 、java培训 、期待与您交流! ----------------------