一、内部类
1、内部类:一个类存放在另一个类的里面,这个类就是内部类。内部类的类名是有所属的。
2、内部类特点:
a、内部类可以直接访问外部类中的成员。
因为内部类都持有一个外部类的引用,外部类名.this。
b、外部类想要访问内部类中的成员必须要创建内部类对象。
3、什么时候定义内部类呢?
类是用于描述事物的,而事物中如果还有具体事物,而且这个内部类的事物在访问着所属事物中的内容。
这时这个内部的事物,就用类来描述,这个类就是内部类。
4、内部类的修饰符:
a、权限修饰符。
默认或共有。
可以直接这样访问内部类,外部类名.内部类对象.new 内部类对象。
当内部类定义在外部类的成员位置上时,可以使用成员的修饰符。
怎么调用内部类中的内容。
b、static修饰符。
内部类被静态修饰,出现访问局限性,只能访问外部类中静态成员。
内部类被静态后,会随着外部类的加载而加载,可以直接new内部类对象。
调用内部类中非静态成员,需要创建内部类对象。
访问内部类中的静态成员,不需要对象。
注意:如果内部类中定义了静态成员,该内部类必须被静态修饰。
记住:内部类只有定义在外部类的成员位置才能定义这些修饰符。
c、内部类也可以定义在外部类中的局部变量位置上。
内部类定义在局部位置上不能访问局部中的变量。
只能访问被final修饰的局部常量。
5、内部类定义在局部:内部类定义在外部类的局部位置上时,只能访问被final修饰的局部常量。
6、什么是匿名内部类?
匿名内部类其实就是一个匿名子类对象。这个对象用{}结尾内部定义了成员。
也就是说是一个带有成员内容的对象。
7、匿名内部类
a、定义匿名内部类需要前提:
前提:内部类需要继承或者实现一个外部的类或者接口。
b、匿名内部类:其实就是一个子类匿名子类对象。
8、匿名内部类使用注意细节:
a、匿名内部类想要调用多个方法时,必须得需要对象的引用。
b、如果使用父类引用来接收子类对象,就只能使用父类中的方法。
9、为什么要定义内部类呢?
类是用于描述事物的,而事物中如果还有具体的事物,而且这个内部类的事物在访问所属事物中的内容。这时这个内部类的事物,也需要用到类中的描述,这个类就是内部类。
代码示例:
new Demo() //Demo d = new Demo()
{
void show()
{
System.out.println("show run..."+num);
}
}show(); //d.show;
10、什么时候使用匿名内部类?
匿名内部类使用场景之一:
当接口类型参数,当接口中方法不超过3个,可以用匿名内部类作为函数的参数进行传递,这样可以简化格式。
但是接口方法多时,不要使用匿名内部类,影响阅读性。