问题描述
classA{Stringstr="Hello";publicvoidt(){System.out.println("Hello,yousonofabitch.");}}classBextendsA{Stringstr="OK";publicvoidt(){System.out.println("What'sup,youbastard?");}}publicclassTest{publicstaticvoidmain(String[]args){Aaa=newB();System.out.println(aa.str);aa.t();Bbb=newB();System.out.println(bb.str);bb.t();}}What'stheresult?
解决方案
解决方案二:
HelloWhat'sup,youbastard?OKWhat'sup,youbastard?可怜的揭帖率。。
解决方案三:
OKWhat'sup,youbastard?OKWhat'sup,youbastard?请赐教!
解决方案四:
看了上面的2个回复,焦点就集中在第一次输出的时候到底是“Hello”还是“OK”这个Aaa=newB();的情况下Stringstr=“Hello”到底是有没有被重新赋值。我也很想知道请赐教!
解决方案五:
引用1楼li_d_s的回复:
HelloWhat'sup,youbastard?OKWhat'sup,youbastard?可怜的揭帖率。。
夸奖,夸奖不敢,不敢
解决方案六:
讲解一下吧,高人。
解决方案七:
是不是如果B中直接用str="OK",就是我说的结果了?
解决方案八:
引用6楼zoutuo的回复:
是不是如果B中直接用str="OK",就是我说的结果了?
答案近期公布,请分析下
解决方案九:
还有一些基础问题你能说出重写和重载的不同吗?(详细)
解决方案十:
A为B的父类。那么规定Aaa=newB(),调用的为父类(A)的属性及方法。然而B中重写了A类的t()方法。所以在用aa.t()调用的是B类的t(),这时候的aa.t()相当于:Bbb=newB();bb.t();这是关于方法的分析。下面是关于函数的:由于B类继承A类,那么B完全可以直接使用str="OK";这相当于重新为A类中的str赋值。然而B并没有这么做,他重新声明了一个变量:Stringstr="OK";所以在看完答案后,本人认为B重写了A的t方法,但并没有更改A中str的值。不知道这么分析有没有错误。望赐教!
解决方案十一:
说错了,下面是关于变量的……
解决方案十二:
就是个继承问题。如楼主情况,记着:Aaa=newB();System.out.println(aa.str);aa.t();Bbb=newB();System.out.println(bb.str);bb.t();上面调用变量时,一定是aa的,即是不考虑对象实际的类型,只考虑看到的aa.str的aa是什么类型方法就是考虑对象的实际类型,实际类型是什么,就调用什么的方法。故题中是子类的方法。
解决方案十三:
顶了...技术是建立在基础上的
解决方案十四:
HelloWhat'sup,youbastard?OKWhat'sup,youbastard?1.Aaa=newB();这句话中的对象aa执有的是A的引用是不完全属于B类的对象。所以输出的应该是A对象的属性。即Hello.但其new的却是B类的对象。所以调用的应该是子类已重写的方法。输出的是What'sup,youbastard?2.Bbb=newB();这句中,bb对象已重新new了一次。那么bb对象是跟aa完全不一样的对象。其执有的是B的引用。new的又是B的构造方法。所以bb是完全属于B类的对象。那么输出的属性与调用的方法都应该是B类的。答案也就出来了。上面的解释1中,涉及到内存中对象的存储方式与结构。详细可参考《JAVA编程思想》中对于JAVA对象在内存中存储章节的详解。
解决方案十五:
HelloHello,yousonofabitch.OKWhat'sup,youbastard?我觉得是这样的输出
解决方案:
呵呵,我错了,是我学艺未精
解决方案:
运行结果:HelloWhat'sup,youbastard?okWhat'sup,youbastard?
解决方案:
bit代表什么?A.字节B.字C.二进制位D.字长
解决方案:
D
解决方案:
这玩意在网上发帖都炒了几百遍了呀,晕呀!!
解决方案:
呵呵,自己运行试一下嘛,学编程,勤编程!
解决方案:
三个人去motel,老板说三个人需要$30,所以他们三个人一人交了$10。第二天老板觉得,他们三个人一起,一共交$25就可以了。老板拿了$5给服务生,叫服务生给客人送过去。结果服务生因为那三个人没给小费怀恨在心,只给他们每个人退回$1。那么问题来了,他们第一天总共交了$30,现在变成他们由一人交$10,变为一人交$9,他们一共交了$27,服务生私吞$2,那么那$1哪去了?
解决方案:
你这个不能这样算了,老板退出五元,说明只有两个人只交了八元,有一个人交了九元,当服务员退他们3元,私藏2元时,他们只有一人可以算十元,有两名九元,所有就不存在你上面所谓的一元之差了。。
解决方案:
一直蜗牛掉到了井里,井深10米,蜗牛是晚上爬3米,白天睡觉掉下来2米,问蜗牛几天可以爬出来?
解决方案:
蒙一下吧
解决方案:
7天
解决方案:
哦,不是,应当是8天.第6天时它可以跳到8米处,但又掉下2米,则第6天后他的位置是6米,而第7天它只能跳到9米处,所以然是要得8天咯。
解决方案:
8天蜗牛爬上来告诉上帝的
解决方案:
高手来了
解决方案:
哈哈。。。
解决方案:
把程序弄出来,然后用断点跳下清楚了
解决方案:
剩下那块钱在老板那里.三人一共交了27块,服务生那里两块,老板那里25块(前面也说老板收了30退了5块)
解决方案:
若父类有一个方法A如下定义:publicvoidA(Stringstr){...}则在子类中:publicvoidA(Stringstr){...}这是重写,方法名,参数列表与父类中的方法一致.而publicvoidA(inti){}或publicvoidA(Stringstr,Stringstr2..){}这些方法名相同而参数列表不同的是重载.并且,重写是针对子类方法对父类方法的概念,至少有两个有继承关系的类存在,被重写的方法在父类中.重载是指一个类自已内部存在两个或以上的,同名不同参(数列表)的方法,说不清谁重载谁了^_^!我是菜鸟,今天正好看了这方面的知识,回答得不完善的话请多多指教.
解决方案:
最容易搞混的是字节吧(byte)正解是C二进制位.
解决方案:
学习
解决方案:
怎么不结贴?
解决方案:
thinkinjava
解决方案:
嘿嘿。高人就是多!
解决方案:
HelloWhat'sup,youbastard?OKWhat'sup,youbastard?
解决方案:
正确答案为:HelloWhat'sup,youbastard?HelloWhat'sup,youbastard?原因是实际操作的B类对象变量是以父类的为准,方法是以子类的为准.调用的是父类的变量(把子类的变量覆盖了)实际调用的是子类的方法(相同的)。要想调用子类的对象可以用类名来约束bb.B.str;
解决方案:
来个简单的:有一天,有一个年青人到一个商店里买东西,这件商品的成本是22元卖价是32元。年轻人拿出一张一百元钱给老板,老板没有零钱,找邻居换了零钱。后来邻居发现钱是假的,老板无奈还给邻居一百元。问老板损失了多少钱?
解决方案:
1楼正解-------------------引用40楼Baykermr的回复:
来个简单的:有一天,有一个年青人到一个商店里买东西,这件商品的成本是22元卖价是32元。年轻人拿出一张一百元钱给老板,老板没有零钱,找邻居换了零钱。后来邻居发现钱是假的,老板无奈还给邻居一百元。问老板损失了多少钱?
当然损失100了如果你认为应该把赚的10元抵了,那肯定不对假设100是真的,那么老板损失为零结果100是假的,所以损失100这个问题跟邻居屁事都没有
解决方案:
顶了.
解决方案:
OKWhat'sup,youbastard?OKWhat'sup,youbastard?A类的属性和方法都被重写了
解决方案:
哈哈,这问题我考倒几个人了..引用23楼LouisHwa的回复:
一直蜗牛掉到了井里,井深10米,蜗牛是晚上爬3米,白天睡觉掉下来2米,问蜗牛几天可以爬出来?
解决方案:
汗,从来没注意过这个问题。。。想想应该是先输出hello的吧。。。回去试试
解决方案:
引用楼主LouisHwa的帖子:
classA{Stringstr="Hello";publicvoidt(){System.out.println("Hello,yousonofabitch.");}}classBextendsA{Stringstr="OK";publicvoidt(){System.out.println("What'sup,youbastard?");}}publicclassTest{publicstaticvoidmain(String[]args){Aaa=newB();System.out.println(aa.str);aa.t();Bbb=newB();System.out.println(bb.str);…
就这个答案我赞成
解决方案:
这个是最基本的JAVA等面向对象的特性:,封装,继承,多态这里用到了多态(上面说的覆盖也是那么一回事)属性不具有多态而方法具有多态
解决方案:
引用13楼liupengbart的回复:
HelloWhat'sup,youbastard?OKWhat'sup,youbastard?1.Aaa=newB();这句话中的对象aa执有的是A的引用是不完全属于B类的对象。所以输出的应该是A对象的属性。即Hello.但其new的却是B类的对象。所以调用的应该是子类已重写的方法。输出的是What'sup,youbastard?2.Bbb=newB();这句中,bb对象已重新new了一次。那么bb对象是跟aa完全不一样的对象。其执有的是B的引用。new的又是B的构造方法。所以bb是…
up就是这样
解决方案:
有点头晕!~
解决方案:
学习了