面向对象之匿名对象—代码块
匿名对象的概念:
匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量。
如:已存在的类:
1 public class Person{ 2 public void eat(){ 3 System.out.println(); 4 } 5 }
创建一个普通的类:
Person p = new Person();
创建一个匿名对象:
new Person();
内部类
内部类概念
l 什么是内部类
将类写在其他类的内部,可以写在其他类的成员位置和局部位置,这时写在其他类内部的类就称为内部类。其他类也称为外部类。
l 定义格式
class 外部类 { 修饰符 class 内部类 { //其他代码 }
}
l 访问方式
外部类名.内部类名 变量名 = new 外部类名().new 内部类名();
1 局部内部类
局部内部类,定义在外部类方法中的局部位置。与访问方法中的局部变量相似,可通过调用方法进行访问
l 定义格式
class 外部类 { 修饰符 返回值类型 方法名(参数) { class 内部类 { //其他代码 } } }
l 访问方式
在外部类方法中,创建内部类对象,进行访问
1.1.1 定义匿名内部类的作用与格式
作用:匿名内部类是创建某个类型子类对象的快捷方式。
格式:
new 父类或接口(){ //进行方法重写 };
代码演示:
1 //已经存在的父类: 2 public abstract class Person{ 3 public abstract void eat(); 4 } 5 //定义并创建该父类的子类对象,并用多态的方式赋值给父类引用变量 6 Person p = new Person(){ 7 public void eat() { 8 System.out.println(“我吃了”); 9 } 10 }; 11 //调用eat方p.eat(); 12 法
使用匿名对象的方式,将定义子类与创建子类对象两个步骤由一个格式一次完成,。虽然是两个步骤,但是两个步骤是连在一起完成的。
匿名内部类如果不定义变量引用,则也是匿名对象。代码如下:
new Person(){ public void eat() { System.out.println(“我吃了”); } }.eat();