- 匿名对象
匿名对象是指,在创建对象时,没有保存该对象的地址,如new Person();
- 匿名对象的特点:只能使用该对象一次, 可以作为参数在方法中传递
优点:代码简单 缺点:浪费空间, 不可多次使用
- 可以直接用匿名对象调用成员变量和成员方法
比如:
Public class Person {
Public void work() {
System.out.println(“人在吃饭”);
}
}
Public class test {
Public static void main(String[] args) {
New Person().eat();
}
}
- 内部类
- 内部类的引入:将一个类写在其他类的成员位置或者是局部位置,含义:一个事物还包含其他事物(即一个事物还由其他事物组成),比如小汽车,小汽车中还包含有发动机这个事物
- 对于外部类来说可以将一个内部类看成一个成员变量或者是局部变量,但是从内部类本身来说,内部类本身又拥有类的所有属性,它可以有多态,继承,接口,成员变量,局部变量,成员方法 ,等等。
- 内部类的分类:成员内部类, 局部内部类
当将内部类定义在了外部类的成员变量的位置时,该内部类就称作成员内部类,当将内部类定义在了外部类局部变量的位置时,该内部类就称作局部内部类
- 成员内部类可以使用成员修饰符public static final private 等等
- 成员内部类的调用规则:
- 内部类可以使用外部类成员,包括私有
- 外部类要使用内部类成员,必须要通过内部类对象来完成
- 外部类访问内部类的规则:
Outer.inner + 变量名 = new Outer().new inner();
( 外部类名.内部类名 变量 = new 外部类对象().new 内部类对象() )
依靠外部类对象找到内部类,再通过内部类对象,调用内部类的方法
- 内部类的同名变量的调用:
注意:内部类想要调用外部类的同名成员变量,可以通过:( 外部类名 + . + this + . + 外部类同名成员变量名)
6.局部内部类:(方法里面定义一个类)
1. 调用局部内部类的方法:
问题:为什么局部内部类权限修饰符不能是public?
解释
7.匿名内部类:
匿名内部类存在的意义:
简化代码:将定义实现类(子类),重写方法,创建实现类对象,一步搞定
匿名内部类的实现格式:
new 接口或者父类() {
重写抽象方法;
};
(从new开始到;结束,完成的是创建接口(父类)的实现类(子类)的对象)
匿名内部类的注意事项:
匿名内部类玩的是多态的调用,因此玩匿名内部类,必须要有实现或继承关系。