听课的几点疑问

听课的几点疑问

问题1:

http://img1.sycdn.imooc.com//climg/5cb8486a000142a909090384.jpg

如图所示,使用private修饰了同一类中的两个方法进行封装,然后使用对象名.方法名来实现调用,答案是15。
不是说使用private修饰的属性、方法就是不能被对象名.方法名调用吗?


问题2:
 添加了static的属性或方法,是不是在内存空间中,不是被对象所具有的的空间存储的?对象使用它时,难道是要访问static所在的空间才行?    我的意思是,一般的属性或方法,在对象实例化,并且set、get以后,是存储在对象自己的空间里,像是把食物买回家了,可以私藏了。而添加了static的属性、方法,类似食堂,你要去吃就得离开家去食堂,不能把食物带回家。就是说,static保持了自己的共有、共享?

问题3:
在属性和方法的类中创建set方法,并且在方法体内写好了this.XXX=XXX;,但是在测试类中并没有使用对象调用set,那么这时候set方法里的this.XXX=XXX会不会对private的对应属性赋值?


问题4:

http://img1.sycdn.imooc.com//climg/5cb848a700015d7107710299.jpg

如图所示,在class类的静态方法getMChar()方法里,调用同一类的非静态成员ch是会报错的。我这里的疑问是,在主方法中打印的写法:
new Demo().getMChar();
这是在以前的视频里没有讲过的调用方式,课程里教的是通过实例化对象,然后对象名.方法名来调用方法,可是在这里却是这样写,对象都没有创建,怎么能这样用?


问题5:

http://img1.sycdn.imooc.com//climg/5cb848c70001f18405100228.jpg

如图所示,在静态方法里调用非静态方法是错误的,但是此题还有一处错误是:在run方法里没有传入参数。
这我就不能理解了,run(String name),括号里不是有字符串类型的参数name吗,打印的是(name+"快跑"),name进来了啊,怎么没有传入参数?

正在回答

登陆购买课程后可参与讨论,去登陆

5回答

同学你好,关于Demo demo=new Demo的解释,其实就是创建对象的过程,在链接:http://class.imooc.com/course/qadetail/109533 中已经解释了Cat cat=new Cat()对象的创建,两者意义相同。解释如下:

http://img1.sycdn.imooc.com//climg/5cbac34a00014e7405370184.jpg

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~


吃吃吃鱼的猫 2019-04-20 09:45:05

同学你好,两个问答同学问了同一个问题哦~上一个回答中,老师已经为同学解答了,但是链接多了一个句号,正确的链接如下:http://class.imooc.com/course/qadetail/109533  。如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 鱼儿0001 #1
    你贴的是我的另一个问题帖子,那是我写的。 在我的链接帖子里,你还没有回答我的一个问题:类可以当方法的参数传,在课程里并没有专门开一节课去详细解释,只是在去用时视频里捎带着提一下,这导致我在这里的知识薄弱。老师,你把类可以当参数传的一些用法、规则限制什么的具体讲讲。 老师,秉持着负责的心态,你讲吧,让我等那么久于你有什么坏处?我在学习的过程里碰见问题,你就这么不想解答?
    2019-04-20 10:23:59
  • 提问者 鱼儿0001 #2
    老师请讲吧,在原来提问的帖子还是这个帖子,把类作为参数的具体用法、规则讲清楚
    2019-04-20 10:25:25
吃吃吃鱼的猫 2019-04-19 16:29:36

同学你好,关于Demo demo=new Demo的解释,老师在另一个问答中已经回复,同学可以参考链接下的回复:http://class.imooc.com/course/qadetail/109533。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 鱼儿0001 #1
    老师,链接是403错误,我无权访问此页。你还是具体讲讲吧
    2019-04-19 19:37:01
吃吃吃鱼的猫 2019-04-19 15:00:24

同学你好,new Demo()表示创建一个新的对象。在这里给同学举一个例子。

Cat cat1=new Cat();

cat1.setName("kitty");

cat1.setSex("男");

这时创建了一个名为kitty的小猫,性别为男。

new Cat().setName("小一");

new Cat().setSex("女");

这时创建了两个小猫,一个名为小一,性别没有赋值。另一只名字没有赋值,性别为女。

所以说,在选择对象调用方法或属性时,选择new Demo().XXX还是demo.XXX要看具体的程序逻辑是什么样的。

如果方法的定义中定义了参数,那么在调用方法时,必须要进行传值,所以,run方法中必须传值。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 鱼儿0001 #1
    new Demo().XXX怎么是这样,一次性消费似的,那岂不是很麻烦。 老师,归根究底,我感觉我还是对实例化对象这一块有些疑问:Demo demo=new Demo(),老师针对这里的每一个单词能不能再解释一下,谢谢你!
    2019-04-19 15:18:02
吃吃吃鱼的猫 2019-04-18 18:31:15

同学你好,

  1. private表示私有,意思就是自己对象内部可以直接调用,但不能被除自己对象之外的任何对象调用。这里,两个add对象都在Test类中,调用也在Test类当中,所以,这样写没有问题。

  2. 对于static,同学理解的没错哦。

  3. 当没有调用方法时,不会执行方法体中的语句哦,所以set方法中的赋值语句不会执行。

  4. 在这里给同学举个小例子,Demo demo=new Demo();这句话中,分为三步。

    第一步:Demo demo;定义一个Demo类型的引用,

    第二步:new Demo();这句才是创建对象的语句,

    第三步:Demo demo=new Demo();将引用指向真正的对象。

    所以new Demo().getMChar()其实就相当于demo.getMChar()方法,这里为了方便,是种省略的写法。

  5. 没有传入参数的意思是:调用方法时需要传入参数,即调用run方法时需要传入一个字符串类型的值(这里是名字),写法为:run("小猫")。

    同学可以理解为在调用run(String name)方法时,为name赋值为传入的参数即“小猫”,执行方法语句时,会输出“小猫快跑”。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~


  • 提问者 鱼儿0001 #1
    按照老师的意思去理解后,我是这么想的:new Demo()才是真正的对象?那么以后在对象调用方法或属性时,都能new Demo().XXX吗?那声明的demo就没啥用吗。 关于我第5个问题,我弄清楚了,在其他方法调用run方法时,因为run方法带一个字符串参数,是必须得传值吗?不传行不行?
    2019-04-19 12:08:24
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师