黑马程序员技术交流社区

标题: 小问题 [打印本页]

作者: 方志亮    时间: 2012-9-1 21:41
标题: 小问题


作者: 魏亮    时间: 2012-9-1 21:50
创建一个weekday类的子类对象
作者: 黑马_许芸    时间: 2012-9-1 21:56
这是一个匿名内部类,这个匿名内部类继承自WeekDay这个抽象类,所以它必须实现WeekDay中的抽象方法nextday。建议看看视频中讲解匿名内部类的部分应该就懂了。
作者: 方志亮    时间: 2012-9-1 21:58
魏亮 发表于 2012-9-1 21:50
创建一个weekday类的子类对象

子类名可以和父类的一样?
作者: 方志亮    时间: 2012-9-1 22:00
黑马_许芸 发表于 2012-9-1 21:56
这是一个匿名内部类,这个匿名内部类继承自WeekDay这个抽象类,所以它必须实现WeekDay中的抽象方法nextday ...

就是看了张孝祥老师的增强视频才问的
作者: 魏亮    时间: 2012-9-1 22:01
方志亮 发表于 2012-9-1 21:58
子类名可以和父类的一样?

因为这是以匿名内部类的方式创建子类对象,直接用的父类的引用指向子类的对象。
作者: 方志亮    时间: 2012-9-1 22:02
魏亮 发表于 2012-9-1 22:01
因为这是以匿名内部类的方式创建子类对象,直接用的父类的引用指向子类的对象。 ...

明白了  谢谢
作者: 阳杰    时间: 2012-9-1 22:02

     从那个new 开始  到后面那个分号为止,就是创建了 一个WeekDayl类的子类对象,而new后面紧跟的{}里 写的是WeekDay类的子类重写了WeekDay类中的nextday()方法,这一种是匿名的写法。    而为什么new前面是用WeekDay类型的sun引用去指向创建出来的子类对象呢? 其实这就是多态的表现。

  
作者: 黑马--张帅    时间: 2012-9-1 23:19
这是匿名内部类的写法,匿名内部类必须是继承别的类或者实现了接口。在你的程序中new后面的实际上一个子类对象,并不是父类WeekDay的对象,这只是多态的一种表现(父类引用指向子类对象)至于子类对象的nextday方法是对父类WeeDay中nextday的覆盖,因为子类想通过这个函数实现不一样的功能才进行覆盖,如果是实现的接口,接口中方法必须进行覆盖。
作者: 黑马_许芸    时间: 2012-9-1 23:28
方志亮 发表于 2012-9-1 22:00
就是看了张孝祥老师的增强视频才问的

我知道啊。我也刚刚看了这个地方。我想你没看懂应该是对匿名内部类不太了解吧,所以建议看看匿名内部类的视频




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2