做所谓项目遇到的问题,顺便问下这种思路问题吧,类里属性有类,或者说引用类型的属性里面又有引用类型怎么理解?
最近看到对象,感觉就一下开始纠结了,特别引用类型里面包含了引用类型,虽然就类来说,也就是当成是一个新的数据类型来理解,和基本类型的差别也就是内存里的所占大小刚开始不确实,需要用new来进行分配。但是在最近学到了封装吧,封装的思想反正目前来说我大都是属性都基本是封装成private。
最近做所谓的项目吧,我打算试试做游戏什么的,也就单纯的文字游戏吧,打算在里面用上类吧。整体制作大概是:
学习进度大概也就到封装,还没学完。
下面层都是包,然后包里除了model层基本都是一个类
1、ui层:包,这里C个类只完成输入输出)
2、service层:也是一个包,也许会多个类,服务层,基本数据的处理都靠它完成
3、database层:模拟数据库吧,里面就只有静态的属性,基本数据都丢这里
4、model层:自定义数据类型,也就是整个程序除了基本类型要传递的数据;
顺便问下这个方式是什么方式,有无一个名称什么的来称呼?
并且老是感觉基础怪怪的,于是最近晚上还是啃书看看,虽然感觉越看自己越感觉自己不知道的太多,感觉啥都忘了,果断是会把简单问题复杂化,自己纠结。
回到正题:
编译工具是eclipse。
整个程序流程基本是ui层找service层要数据,service在数据库提取,或者其它,并且用方法返回UI需要的数据或者信息。
所有数据都是从“数据库”来调取,中间经过service层的方法来运算,最后返回一个返回类型(大都有)
我本来打算做个角色类,角色类里面有如下:
//属性,(全部都是private)什么HP,等级打算暂时不考虑吧,所以才说是文字
名字(String类型)
武器(自定义类型,武器类,只有名字(String类型),单独定义出来只是问了可能以后添加其它属性)
背包(武器类型的数组,暂定长度,或者说个数是10吧)
//方法没有,只有自动生成的get和set,toString个人感觉应该是这里有升级或者死亡什么的方法?而不可能靠完全靠service层的方法来做,那样的话感觉太冗余了,不利于查找错误?全用service层的方法做,感觉不是很符合类?所以这里导致感觉自己对类一无所知了
然后在说说"数据库"那块吧,就定义个static的人物类数组,怪物类数组访问public,方便在service层只需要import后就可以直接通过类名来直接访问数据,而不用新建对象。
还有怪物类吧:
主要也就是个名字,和掉落,掉落也是武器类的数组,方法的话还是感觉怪怪,同样是service层这里。
最终大概游戏过程其实是希望随机生成场景,随机生成怪物,理论利用随机数实现选择,在ui层调用方法什么的吧。但是在实际做的时候,感觉思路不清晰了,对类里包类在去调取,类的属性private又是类类型(引用类型)的数组了。一个类牵扯一个类,完全迷糊了。完全不会调用了,特别绕过去绕过来的,甚至类里的类数组,先类里get了类里的数组名,然后set样,总之感觉晕了。
最大的问题在于对类完全糊涂了?然后以前看到说类里类,举个例子,一个人有6只狗。一个人(人类)有6个狗(狗类数组),这样应该是对的等等。。。。。
最后PS:说的不是很清晰和条理,我思路不是很清晰吧,感觉老是糊涂这样,希望各位能看明白
还有两个小问题:
1.null关键字与引用,在书里看到说null是特殊的对象?然后数组引用判断是否指向对象,经常看到的条件是,引用 == null 或者
引用 != null 。虽然这样理解着是判断是否有指向,但是我疑惑得到地方在于,null是特殊对象的话,那么它也是对象,怎么能用==来比较判断,毕竟在对象之间引用使用==表示的是是否引用同一个对象。null是对象的话为什么是用==而不是equals()-目前看到对象具体内容判断比较是否相等是用这个。
2是关于Thread.sleep(20000);这个代码的问题,我看到可以暂停程序就使用这个,但是直接打上没用,然后我又查1.6API中文版,自己导入了java.lang.*包,还是不行,然后我又发现这是静态方法,理论类名.方法名应该是能直接使用的,但是还是报错,后来看别人的加上什么try还有其它才能实现,是什么情况?