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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘文飞 中级黑马   /  2012-11-16 10:58  /  1403 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘文飞 于 2012-11-16 18:52 编辑
  1. class Ticket implements Runnable
  2. {
  3. private static int tick = 100;
  4. boolean flag = true;
  5. public void run(){
  6. if(flag)
  7. {
  8. while(true)
  9. {
  10. synchronized(this)
  11. {
  12. if(tick>0)
  13. {
  14. try{Thread.sleep(10);}catch(InterruptedException e){e.printStackTrace();}
  15. System.out.println("======code=====" + Thread.currentThread().getName() + tick--);
  16. }
  17. }
  18. }
  19. }
  20. else
  21. {
  22. while(true)
  23. {
  24. show();
  25. }
  26. }
  27. }
  28. private synchronized void show()
  29. {
  30. if(tick>0)
  31. {
  32. try{Thread.sleep(10);}catch(InterruptedException e){e.printStackTrace();}
  33. System.out.println("======show=====" + Thread.currentThread().getName() + tick--);
  34. }
  35. }
  36. }
  37. public class StaticMethodDemoMe
  38. {
  39. public static void main(String args[])
  40. {
  41. Runnable run = new Ticket();
  42. Thread t1 = new Thread(run);
  43. Thread t2 = new Thread(run);
  44. t1.start();
  45. try{Thread.sleep(10);}catch(Exception e){}
  46. run.flag = false;//找不到符号
  47. t2.start();
  48. }
  49. }
复制代码
G:\hezi\Code>javac StaticMethodDemoMe.java
StaticMethodDemoMe.java:46: 错误: 找不到符号
                run.flag = false;//找不到符号
                   ^
  符号:   变量 flag
  位置: 类型为Runnable的变量 run
1 个错误

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
41.Runnable run = new Ticket();这是多态的体现,对于多态类中的变量在编译和运行时都看的是左边,那么run.flag = false,编译时会检查的是父类Runnable中是否有flag属性,没有编译报错
回复 使用道具 举报
古银平 发表于 2012-11-16 12:19
41.Runnable run = new Ticket();这是多态的体现,对于多态类中的变量在编译和运行时都看的是左边,那么run ...

哦,这个得向下转型回来,不然就不使用多态了。
回复 使用道具 举报
runnable 里面没有flag  多态只是针对方法  
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马