请高手解读下面的程序,有助于我理解super的用法

问题描述

费话就少说了,直接上代码:Chinese.javaclass Person { void prt(String s) { System.out.println("father--->" + s); } Person() { prt("A Person."); } Person(String name) { prt("A person name is:" + name); }} public class Chinese extends Person { @Overridevoid prt(String s) {super.prt(s);System.out.println("son--->" + s);} Chinese() { super(); prt("A Chinese."); } Chinese(String name) { super(name); prt("his name is:" + name); } public static void main(String[] args) { Chinese cn = new Chinese(); cn = new Chinese("kevin"); }}按我的理解,输出结果应该是:father--->A person.father--->A Chinese.son--->A Chinese.father--->A person name is:kevin.father--->his name is:kevin.son--->his name is:kevin.但是结果却是:father--->A Person.son--->A Person.father--->A Chinese.son--->A Chinese.father--->A person name is:kevin.son--->A person name is:kevin.father--->his name is:kevin.son--->his name is:kevin.这是为什么呀??请大家指教,谢谢啦!

解决方案

Person() { prt("A Person."); } 这里是关键,子类构造函数实例化的时候,super()是调用父类构造函数,父类构造函数里面的prt已经被override了,所以这个时候调用的子类的prt,而不是调用父类的prt在父类的prt中 @Override void prt(String s) { super.prt(s); System.out.println("son--->" + s); } 有调用父类的super.prt

时间: 2024-09-15 23:21:12

请高手解读下面的程序,有助于我理解super的用法的相关文章

请高手看一段程序

问题描述 usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.IO;namespaceConsoleApplication1{classProgram{staticvoidMain(string[]args){int[,]b=Matrix.ReadFromFile("C:\1.txt");for(inti=0;i<b.GetLength(0);i++){for(intj=0;j<b

short转换成byte[]时,数值为负,请高手帮我看看程序啊。

问题描述 我需要把一个short数值A放到数组里,当A>255时,需要两个字节的数组.我发现b[1]的值为负,和我想象中的不一样.publicstaticvoidputShort(byteb[],shorts,intindex){b[index]=(byte)((s>>8)&0xff);b[index+1]=(byte)((s>>0)&0xff);}例如A=1234期望值为:b[0]=0x04,b[1]=0xD2真实值为:b[0]=0x04,b[1]=0x-4

c语言程序-请高手 看看这个程序 是什么问题

问题描述 请高手 看看这个程序 是什么问题 include int main () { int Isprime(int t) { int x; for(x = 2;x < t;x++) { if(t%x == 0) break; } if (x == t) return 1; else return 0; } int n(k) { int t; for (t ==2; t<= k;t++) { if(Isprime(t)); printf("%dn",t); } } int

xmn-运行Java程序时,JVM参数没有生效,请高手帮忙看看。

问题描述 运行Java程序时,JVM参数没有生效,请高手帮忙看看. 小弟在学习GC的过程中,遇到JVM参数未生效的问题,一时不知道怎么解决,请路过大神帮帮忙指点指点,小弟谢过! 运行环境为:Win7 64bit, 4 core. 1,程序如下 public class PSGCDirectOldDemo { /** * @para args * @throws InterruptedException */ public static void main(String[] args) throw

iis7.0-IIS7 发布网站应用程序中的服务器错误问题 请高手指教

问题描述 IIS7 发布网站应用程序中的服务器错误问题 请高手指教 将我的MVC4程序发布到本机IIS7上报错: 确认2点: 1.发布的程序不存在问题,在服务器上可以正常访问,服务器系统是Windows2008 64位系统,我本地是win7 64位系统. 2.有将.net framework注册到IIS上 网上有讲到的 我基本都有设置修改到,但是问题依然在,求教... 解决方案 不一定,也许是数据库连接.文件系统权限等问题.你能看到那个页,说明asp.net已经在工作了. 解决方案二: 信息有点

请高手给个方向,用vb怎么得到其他语言编写的应用程序内容?苦思良久

问题描述 请高手给个方向,用vb怎么得到其他语言编写的应用程序内容?苦思良久 用了函数api getwindowstext wm-gettext 都取不到想要的内容,,我是用vb获取到相应的 句柄 但是有些内容没法获取 软件 是其他语言编写假如是c#的 请大神指点一下方向 怎么可以用vb获取想要的应用程序的任意显示的内容 不考虑数据加密的情况 就是类似 屏幕取词的 作用 想直接得到显示的数据 有什么个研究方向 例如是要掌握什么知识 解决方案 如果是获取C#程序的内容,那很简单. 参考:http:

c语言-程序出错,无法解决请高手相助

问题描述 程序出错,无法解决请高手相助 /*二分法求根的算法,无法输出x0,x1,求高手*/ #include int main() { double x,x0,x1; double f,f0,f1; x0=-10; x1=10; while(fabs(x1-x0)>=1e-6) { x=(x0+x1)/2; f=x*(2*x*(x-4)+3)-6; f0=x0*(2*x0*(x0-4)+3)-6; f1=x1*(2*x1*(x1-4)+3)-6; if(f*f0>0) x0=x; else

c语言-请高手看一段C程序代码不知道哪里出错了

问题描述 请高手看一段C程序代码不知道哪里出错了 解决方案 另外printf你又拼错了. 解决方案二: 第14行 应为printf 解决方案三: 你的那个所谓的山寨编译器,也不知道有没有windows.h,估计没有. 建议你使用VC++ 解决方案四: 这本书其实我也看过,作者自己做了一个所谓的开发环境,其实用的是GNU C++,它并不包含windows的api函数的头和库. 解决方案五: 出错信息呢,贴出来呗 解决方案六: 你第14行的 printf 写错了 解决方案七: 第14行的printf

高分请高手写个程序,要求把textbox.text中的内容写到数据库SQl2000中.textbox.text中的是一偏文章文章已经用中文分词软件分好

问题描述 高分请高手写个程序,要求把textbox.text中的内容写到数据库SQl2000中.textbox.text中的是一偏文章文章已经用中文分词软件分好,词与词之间用制表符分好.求高手写个程序~ 解决方案 解决方案二:分词能做好,怎么会不知道怎么操作数据库呢解决方案三:protectedvoidbtnEditor_Click(objectsender,EventArgse){//读取数据库连接字符串stringconn=ConfigurationSettings.AppSettings[