为了账号安全,请及时绑定邮箱和手机立即绑定

在这儿并没有申明FU为Demo的父类,为什么还是可以继承重写呢

在这儿并没有申明FU为Demo的父类,为什么还是可以继承重写呢

眼眸繁星 2019-03-01 11:13:32
//此处用了匿名内中类 abstract class Fu { public abstract void sleep(); } class Demo { public void fun() { //创建匿名对象,可以使用匿名类中类 new Fu() { public void sleep() { System.out.println("睡觉"); } public void eat() { System.out.println("吃饭"); } } .sleep(); //创建匿名对象 new Fu() { public void sleep() { System.out.println("睡觉"); } public void eat() { System.out.println("吃饭"); } } .eat(); } } class Demonmnbl1 { public static void main(String[] args) { Demo de1 = new Demo(); de1.fun(); } }
查看完整描述

3 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

又不是Demo重写,是里面的两个匿名子类重写的。。Demo只是负责调用

查看完整回答
反对 回复 2019-03-01
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

Demo并没有继承抽象类。 只是包含了Fu类的实例。

没用过JAVA,抽象类怎么可能被实例化?这才是值得奇怪的地方。

我感觉 new Fu()应该就相当于 something = new Fu(). 一个继承了Fu的匿名对象。这也就是OOP里的多态。

查看完整回答
反对 回复 2019-03-01
?
富国沪深

TA贡献1790条经验 获得超9个赞

定义匿名内部类的时候,JVM会自动给你生成一个类,说是匿名,其实对于JVM来说,当然不是匿名,JVM知道这个类,而用户不知道,用户无法访问这个类,这个类是你new的类或接口的子类或实现类,它的引用是父类或接口。

查看完整回答
反对 回复 2019-03-01
  • 3 回答
  • 0 关注
  • 487 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信