A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. class Computer
  2. {
  3. void run()
  4. {
  5. System.out.println("电脑运行");
  6. }
  7. void reset()
  8. {
  9. System.out.println("电脑重启");
  10. }
  11. }

  12. class Teacher
  13. {
  14. private String name;
  15. private Computer c;
  16. Teacher(String name)
  17. {
  18. this.name = name;
  19. System.out.println(name+"的课程");
  20. c = new Computer();
  21. }
  22. public void prelect()<FONT color=red>//这里按照描述具体事物来说,讲课应该是老师特有的,不应该公有,如果共有那不就是说学生也可以调用来讲课了吗?
  23.                              //但是私有在本类可以被访问,为什么定义成私有就会提示报错了呢?想定义私有又编译成功该如何解决?
  24.                              //希望各位帮我指点迷津啊,到底怎样定义才更合理,希望能从内存中的指向上给我解释下这个问题,帮我理清思绪
  25. </FONT>{
  26. c.run();
  27. System.out.println("开始上课");
  28. }
  29. }

  30. class ExceptionTest
  31. {
  32. public static void main(String[] args)
  33. {
  34. Teacher t = new Teacher("毕老师");
  35. t.prelect();
  36. }
  37. }
复制代码

4 个回复

倒序浏览
       //这里按照描述具体事物来说,讲课应该是老师特有的,不应该公有,如果共有那不就是说学生也可以调用来讲课了吗?
————————调用非静态方法必须要建立对象,用对象来调用。学生如何调用老师的方法?
      //但是私有在本类可以被访问,为什么定义成私有就会提示报错了呢?想定义私有又编译成功该如何解决?
————————方法定义成私有之后,只能在本类中被访问。就如同private name了。这时你在外面建立一个teacher对象,无法用teacher.name=xxxx来修改name。
      //想定义私有又编译成功该如何解决?
____________将这个方法定义成私有,外界就无法访问。可以再定义一个对外暴露的方法来访问这个方法。              
     //希望各位帮我指点迷津啊,到底怎样定义才更合理,希望能从内存中的指向上给我解释下这个问题,帮我理清思绪
————————关于内存,我的知识面只知道他们都是在堆内存和方法区上,只不过被修饰符所修饰而有了不同的权限。。。
回复 使用道具 举报
本帖最后由 应广驰 于 2012-10-2 16:57 编辑

public void prelect()<FONT color=red>//这里按照描述具体事物来说,讲课应该是老师特有的,不应该公有,如果共有那不就是说学生也可以调用来讲课了吗?

这个可不是这样理解的,公有就是说,不管哪个老师都有讲课方法,所有老师都可以调用自己的讲课方法,注意是老师自己调用的,不是学生调用的,公有可以说只针对自己这个类,除非这个方法是静态的,这就好比你找到一个老师让他教课,因为他有公有的讲课方法,但是注意这是老师自己才能调用的。

而私有方法是这个类的方法只有这个类内部自己能调用,比如说老师有个公有方法是吃饭,而吃饭会调用一个消化方法,这个方法是私有的,因为你不知道怎么用,只有吃饭方法知道,只有他的内部能使用。

所以说权限修饰并不是针对所有的类,而是针对这个类的实例对象

讲的有点不清楚,不过应该能理解吧

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
郭阳 发表于 2012-10-2 16:49
//这里按照描述具体事物来说,讲课应该是老师特有的,不应该公有,如果共有那不就是说学生也可以调 ...

嗯 谢谢你的解答 只不过在内存中是如何调用的还是有些云里雾里,不过十分感谢!
回复 使用道具 举报
应广驰 发表于 2012-10-2 16:55
public void prelect()//这里按照描述具体事物来说,讲课应该是老师特有的,不应该公有,如果共有那不就是 ...

“所以说权限修饰并不是针对所有的类,而是针对这个类的实例对象”
这句我忽略了,方法不是static的,即使有学生类也没办法调用这个方法,只有建立老师的对象才能调用哈,谢谢指点迷津!
上面的提示也对我很有帮助 谢谢!

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马