黑马程序员技术交流社区
标题:
面向对象思想
[打印本页]
作者:
汪伟楠
时间:
2014-1-13 11:21
标题:
面向对象思想
有人敲门,我去开门。这件事怎么用面向对象的思想来思考,而且用代码怎么实现???
作者:
李程
时间:
2014-1-13 11:34
门是对象,定义两个功能,一个是发出响声的功能,另一个是开的功能,这样可以吗?
作者:
淡夜清风
时间:
2014-1-13 12:31
两个类:一个人和一个门。
人:有敲门和开门的方法,还有监听门是否响的方法
门:有开的状态和关的状态,还有发出响声的方法或状态
---------
敲门:当人发现门的状态为关着的,就敲门。门这时候就发生响了。
开门:当我监听到门发生响声后,就开门。将门的状态置为开。。
作者:
app297
时间:
2014-1-13 12:48
不知道可以一,我自己觉得还说得通
我的理解是,
门是一个类: 有开门 和 门铃响的方法。
人是一个类: 人 敲门 方法。
public class Test {
public static void main(String[] args) {
Person p = new Person();
p.knock(new Door());
}
}
class Door{
public void openDoor(){
System.out.println("门开了");
}
public void diabolo(){
System.out.println("响铃");
}
}
class Person{
public void knock(Door door){ //人敲哪个门?
door.diabolo();
}
}
复制代码
作者:
程玉习
时间:
2014-1-13 12:51
本帖最后由 程玉习 于 2014-1-13 13:10 编辑
class OpenDoor
{
public static void main(String args[])
{
Person p = new Person();
p.qiao();
Door d = Door.getInstance();
d.dingDong();
Me m = Me.getInstance();
m.answer();
d.open();
}
}
class Person
{
public void qiao()
{
System.out.println("有人吗?");
}
}
class Door
{
private static Door d = null;
private Door(){}
public static Door getInstance()
{
if(d == null)
{
synchronized(Door.class)
{
if(d == null)
d = new Door();
}
}
return d;
}
public void dingDong()
{
System.out.println("叮咚");
}
public void open()
{
System.out.println("门开了");
}
}
class Me
{
private Me(){}
private static Me m = new Me();
public static Me getInstance()
{
return m;
}
public void answer()
{
System.out.println("来了!");
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2