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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 汪伟楠 中级黑马   /  2014-1-13 11:21  /  1170 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

有人敲门,我去开门。这件事怎么用面向对象的思想来思考,而且用代码怎么实现???

评分

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

查看全部评分

4 个回复

倒序浏览
门是对象,定义两个功能,一个是发出响声的功能,另一个是开的功能,这样可以吗?
回复 使用道具 举报
两个类:一个人和一个门。
人:有敲门和开门的方法,还有监听门是否响的方法
门:有开的状态和关的状态,还有发出响声的方法或状态
---------
敲门:当人发现门的状态为关着的,就敲门。门这时候就发生响了。
开门:当我监听到门发生响声后,就开门。将门的状态置为开。。

评分

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

查看全部评分

回复 使用道具 举报 1 0
不知道可以一,我自己觉得还说得通
我的理解是,  
门是一个类: 有开门 和 门铃响的方法。
人是一个类: 人 敲门 方法。
  1. public class Test {
  2.        
  3.         public static void main(String[] args) {
  4.                 Person p = new Person();
  5.                 p.knock(new Door());
  6.         }
  7. }

  8. class Door{
  9.         public void openDoor(){
  10.                 System.out.println("门开了");
  11.         }
  12.         public  void diabolo(){
  13.                 System.out.println("响铃");
  14.         }
  15. }
  16. class Person{
  17.         public void knock(Door door){  //人敲哪个门?
  18.                 door.diabolo();
  19.         }
  20. }
复制代码



评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 程玉习 于 2014-1-13 13:10 编辑

  1. class OpenDoor
  2. {
  3.         public static void main(String args[])
  4.         {
  5.                 Person p = new Person();
  6.                 p.qiao();
  7.                
  8.                 Door d = Door.getInstance();
  9.                 d.dingDong();

  10.                 Me m = Me.getInstance();
  11.                 m.answer();
  12.                 d.open();
  13.         }
  14. }

  15. class Person
  16. {
  17.         public void qiao()
  18.         {
  19.                 System.out.println("有人吗?");
  20.         }
  21. }

  22. class Door  
  23. {  
  24.     private static Door d = null;  
  25.   
  26.     private Door(){}  
  27.   
  28.     public static Door getInstance()  
  29.     {  
  30.         if(d == null)
  31.         {  
  32.             synchronized(Door.class)
  33.             {  
  34.                 if(d == null)  
  35.                     d = new Door();  
  36.             }  
  37.         }  
  38.         return d;  
  39.     }
  40.        
  41.         public void dingDong()
  42.         {
  43.                 System.out.println("叮咚");
  44.         }

  45.         public void open()
  46.         {
  47.                 System.out.println("门开了");
  48.         }
  49. }

  50. class Me  
  51. {  
  52.     private Me(){}  
  53.   
  54.     private static Me m = new Me();  
  55.   
  56.     public static Me getInstance()  
  57.     {  
  58.         return m;  
  59.     }  
  60.         public void answer()
  61.         {
  62.                 System.out.println("来了!");
  63.         }
  64. }
复制代码

评分

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

查看全部评分

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