首页 新闻 会员 周边

本人小白 希望前辈们能帮忙看看我的值传递问题

0
[已解决问题] 解决于 2017-12-30 19:54

为什么我子类调用父类方法用get方法却打印不出来name值,使用toString就行,同样是返回了 name啊?

陈同学930216的主页 陈同学930216 | 菜鸟二级 | 园豆:210
提问于:2017-12-30 15:30
< >
分享
最佳答案
2

你只是在 get() 方法中调用了 super.getName() ,并没有打印它的返回值,也没有将返回值赋值给某个变量进行打印

奖励园豆:5
dudu | 高人七级 |园豆:30994 | 2017-12-30 15:50

哦哦,好像是这样,那toString()是直接可以打印的吗?

陈同学930216 | 园豆:210 (菜鸟二级) | 2017-12-30 15:52

@陈同学930216: toString() 方法中返回了 name 的值

dudu | 园豆:30994 (高人七级) | 2017-12-30 15:55

@dudu: getName()也返回了name值啊

陈同学930216 | 园豆:210 (菜鸟二级) | 2017-12-30 16:02

我子类调用父类的toString()方法也没有传值给父类引用啊,为什么toString方法就可以打印出来呢?

陈同学930216 | 园豆:210 (菜鸟二级) | 2017-12-30 16:02

@陈同学930216: 但是你打印的是a.get(),它返回的是 test 的值

dudu | 园豆:30994 (高人七级) | 2017-12-30 16:05

@陈同学930216: 子类的 toString() 中返回了父类 toString() 的值,这只是方法返回值的问题

dudu | 园豆:30994 (高人七级) | 2017-12-30 16:10

@dudu: 那我有一点问题,就是我打印a.get()的时候返回test,那时候不是会调用基类的getName()方法,那时候 不是返回了基类的name吗?如果你说我没把name的值没赋值给变量,test赋值给a,那么子类toString()方法调用的时候是不是先 a指向test指的值,然后返回父类的toString()方法的时候a指向父类name的值吗?调用getName()的时候为什么就不会指到name那个返回值呢?

陈同学930216 | 园豆:210 (菜鸟二级) | 2017-12-30 16:22

@dudu: 奥,我知道了 ,我把name搞错了 ,基类name是私有的,指不到那边,还是谢谢你

陈同学930216 | 园豆:210 (菜鸟二级) | 2017-12-30 16:31

这次我真的明白了 get方法后面没有返回name,如果get方法像toString方法那样再返回基类方法就可以打印出来,还是要谢谢前辈

陈同学930216 | 园豆:210 (菜鸟二级) | 2017-12-30 19:52
其他回答(2)
1

name基类是私有的

陈同学930216 | 园豆:210 (菜鸟二级) | 2017-12-30 16:34

你还是没有搞懂!!呵呵,你认真把你的代码读一读。。。

支持(0) 反对(0) David5201 | 园豆:534 (小虾三级) | 2017-12-30 18:04

@David5201: 啊,不是私有的问题啊?

支持(0) 反对(0) 陈同学930216 | 园豆:210 (菜鸟二级) | 2017-12-30 19:46

@陈同学930216: 看你这么认真的分上,我给你白话白话。呵呵!

1,E_15 a = new E_15("BOD",49); 利用public E_15(string name,int num) 生成一个a对象。这句话,把name 与 test赋值为bod 与49。 

2,a对象调用get()方法。  

public int get(){
  super.getName();
      return test;
}     

你就是这里没有搞明白吧。。 你看,这里就return了一个test,就是你1里面赋值的49.自然,

system.out.println(a.get()) 打印的就是49.这个没有问题吧。

3,system.out.println(a); 因为,所有的对象都是继承object对象。 并且实现了toString()方法。打印a.toString() ....(不对,你打印的是对象。。不是打印的a.toString()啊。。)

支持(0) 反对(0) David5201 | 园豆:534 (小虾三级) | 2017-12-30 22:46

@David5201: 现在知道了 我的问题出在你和我说的第二点,不是第三点,不管怎么样还是要谢谢你

支持(0) 反对(0) 陈同学930216 | 园豆:210 (菜鸟二级) | 2017-12-30 22:55
0

话说你的get方法里只返回了test这个值,name你并没有返回,当然不会输出

西红柿里没有番茄 | 园豆:645 (小虾三级) | 2017-12-30 18:08

奥  我明白了 如果再get方法里再返回getName方法就可以打印出来 是吗?

支持(0) 反对(0) 陈同学930216 | 园豆:210 (菜鸟二级) | 2017-12-30 19:49

@陈同学930216: 对,你get方法里已经返回了test所以你可以看到test的值,如果放test和name那你两个都可以看到。按照你所说的因为你getName方法里已经返回了name ,所以你在get方法里再返回getName方法也是可以的

支持(0) 反对(0) 西红柿里没有番茄 | 园豆:645 (小虾三级) | 2017-12-30 20:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册