求大神帮忙看看这个匿名内部类

问题描述

abstractclassAnimalVoice{abstractStringName();abstractStringVoice();}publicclassAnonymous{publicvoidtest(AnimalVoicea){System.out.println("那里有只"+a.Name()+"在"+"""+a.Voice()+"""+"的叫着。");}publicstaticvoidmain(String[]args){Anonymousas=newAnonymous();//传入匿名内部类的实例as.test(newAnimalVoice(){@OverridepublicStringVoice(){return"汪汪汪...";}@OverridepublicStringName(){return"小狗";}});AnimalVoicea1=newAnimalVoice(){@OverridepublicStringVoice(){return"喵喵喵...";}@OverridepublicStringName(){return"小猫";}};as.test(a1);}}这个抽象类为什么能创建实例啊??

解决方案

解决方案二:
AnimalVoicea1=newAnimalVoice(){@OverridepublicStringVoice(){return"喵喵喵...";}@OverridepublicStringName(){return"小猫";}};匿名内部类就是这样创建实例的,它实现了抽象类的全部方法,其实就相当于一个具体的类了,只不过他没有名字。
解决方案三:
其实你创建匿名内部内的时候效果相当于创建了一个该抽象类的子类,然后由该子类创建一个对象,只是这个子类对象没有名字而已,这是一种多态的体现
解决方案四:
你把传入的匿名内部类那个参数拆分成两部分来理解,第一步:定义了一个没有名字的类,正常情况下类是有名字的,这里没有名字,而是继承了抽象类,同时重写了其中的方法。第二步:创建刚刚定义的没有名字的类的实例对象,作为参数传入。语法就是把这两步结合到一起了。
解决方案五:
你已经都实现抽象类的方法了,相当于覆盖了原来的方法。你原来代码:AnimalVoicea1=newAnimalVoice(){@OverridepublicStringVoice(){return"喵喵喵...";}@OverridepublicStringName(){return"小猫";}};as.test(a1);}}

你改成这个就不能运行了。。。AnimalVoicea1=newAnimalVoice();

解决方案六:
为什么会创建实例?因为此处的是相当与对抽象类的继承的类的实现,只不过此处的类没有名字而已。

时间: 2024-11-02 11:12:27

求大神帮忙看看这个匿名内部类的相关文章

关于java重写paint方法,求大神帮忙

问题描述 关于java重写paint方法,求大神帮忙 我能理解第一段模版函数,然后通过继承和重写方法,代入,为什么第二段代码,不需要带入父类方法,自己就跑起来了了,好像只要把paint重写了,系统自动跑, 还有中间通过屏幕监听的控制关闭的代码看不懂,为什么要这样写,老师说是匿名内部类,求大神讲解 解决方案 4444LJKHJHJHK'HJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKJJJJJJJJJJJJJJ 解决方案二: 问题1:重新pa

ie-IE浏览器样式错误的问题,求大神帮忙?

问题描述 IE浏览器样式错误的问题,求大神帮忙? 2C 为什么页面的样式在别的浏览器上显示正确,在IE浏览器上完全没有了样式,有什么可能啊,急需?? 解决方案 ie不完全兼容html5和css3 解决方案二: 你用的哪个版本的Ie;你可以向上或向下调调看看 解决方案三: 应该是不支持,兼容性问题吧.可以写下判断是那种浏览器,然后根据不同浏览器调用不同样式. 解决方案四: 什么样式,是颜色呢,还是排版 解决方案五: .bb{ background-color:#f1ee18;/*所有识别*/ .b

谁有6路抢答器的设计呀?求大神帮忙!!!

问题描述 谁有6路抢答器的设计呀?求大神帮忙!!! (1)以单片机为核心,设计一个6位竞赛抢答器:同时供6名选手或6个代表队比赛,分别用6个按钮S0-S5表示.(2)给节目主持人设置5个控制开关,用来控制系统的清零和抢答的开始及各种时间的调节控制:(3)抢答器具有数据锁存功能.显示功能和声光提示功能:(4)主持人可以通过两个时间调节键来调节抢答限制时间和答题限制时间.需在主持人按下抢答开始按钮后抢答方可开始,且各个环节都有相应时间限制. 最好是用C语言编程的

android 类qq空间图片查看器。出现好多错误 求大神帮忙。小女涉入甚浅。

问题描述 android 类qq空间图片查看器.出现好多错误 求大神帮忙.小女涉入甚浅. 11-20 11:26:39.629: E/AndroidRuntime(1136): FATAL EXCEPTION: main 11-20 11:26:39.629: E/AndroidRuntime(1136): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.desktop/co

jdk-执行source /etc/profile时候报如下错误,求大神帮忙!

问题描述 执行source /etc/profile时候报如下错误,求大神帮忙! 10C 在/etc/profile配置jdk路径,执行source /etc/profile时候报如下错误:bash: STSIZEpathmunge: command not found export JAVA_HOME=/usr/java/jdk1.6.0_45export PATH=$PATH:$JAVA_HOME/binexport CLASSPATH=.:$JAVA_HOME/lib/tools.jar:

ligertree 求大神-ligertree 求大神帮忙解答

问题描述 ligertree 求大神帮忙解答 怎样让ligertree子节点如图片中一样只在点击黑框部分时才可有反应? 解决方案 {求大神帮忙!!!!!!} 解决方案二: 那你要改源代码了,他那个直接点击li容器也会增加选中样式 修改ligeruiV1.2.5SourcelibligerUIjsplugins里面的ligerTree.js, g.tree.click(function (e)这个事件里面,大概在1083这行增加一句判断是点击了文字才执行添加选中样式 if (!$(obj).has

matrix-C++类中包含数组,如何重载运算符,第一次进入,还没有c币,求大神帮忙了,感激不尽

问题描述 C++类中包含数组,如何重载运算符,第一次进入,还没有c币,求大神帮忙了,感激不尽 这是头文件 #include #ifndef MATRIX_H_ #define MATRIX_H_ class matrix { private: double a[20][20]; int m,n; public: matrix(); matrix(const matrix&a); ~matrix(); matrix operator=(const matrix&a); friend void

一个ajax最简单的问题困扰了好久啊,求大神帮忙看看,后台是vb.net的

问题描述 一个ajax最简单的问题困扰了好久啊,求大神帮忙看看,后台是vb.net的 前台的ajax是这样的: <script type="text/javascript"> $(function () { $("#button1").click(function () { $.ajax({ type: "post", url: "ajax.aspx/ajaxtext", dataType: "text&

求大神帮忙,万分感激,关于jekyll的问题

问题描述 求大神帮忙,万分感激,关于jekyll的问题 在http://jekyllthemes.org/任意下载一个主题后,在主题根目录下,打开命令,输入jekyll build:jekyll s:分别出现如图的情况. 现在想通过网页127.0.0.1:4000访问这个主题:却访问不了,显示如图?请大神帮忙一下,该如何才能通过网页访问主题? 解决方案 估计是你选的highlighter是用python 写的,但是你只有ruby.建议你换个ruby写的highlighter 比如rogue 解决