面向对象之匿名对象—代码块

匿名对象的概念:

 

匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量。

如:已存在的类:

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();

  

 

 

posted @ 2018-07-27 16:55  文昭  阅读(144)  评论(0编辑  收藏  举报