关于java中匿名内部类的问题

不是说抽象类不能实例化么?为啥这里它又实例化了??
疑惑是代码中有个 person p=new person()

图片说明

定义匿名内部类的格式:
new 父类构造器(参数列表)|实现接口()

{

//匿名内部类的类体部分

}

相当于
new Person(){
//类体部分
}

也相当于如下代码,但是不等于,匿名内部类没有类名,无法定义构造器,但可以定义实例初始化块,通过实例初始化块来完成构造器需要完成的事情
class 子类 extends Person {
//实现父类抽象方法
}
而Person p 是声明一个引用变量,用于指向内部类,不是实例化;因为匿名内部类适合创建只需要使用一次的类,所以不需要新建一个子类继承父类。
(仅是小白的见解,有错见谅)

这不是在创建对象的时候重写了方法么

http://www.cnblogs.com/nerxious/archive/2013/01/25/2876489.html,同学,你的理解是错误的,希望这个对你有帮助

new Person()这里是一个匿名的类,这个类实现了抽象方法,所以这个匿名类是Person的子类,从而父类引用指向子类对象。
这里就存在了多态。
个人理解,有错望指正!

定义匿名内部类的方法是new 父类构造方法{
//重写父类中的方法
}
你这个其实就是创建了一个新的匿名类去继承了Person类,然后将匿名类对象向上转型为Person类。
Person p =new Person(); 是不一样的,要注意区分一下,可以看通过有没有实现父类的抽象方法来判定,因为一般的类在平时是不会这样去重写父类的方法