楼主 这个你要在语义上理解 就像你前面学习OOP的时候
是这样讲的
人开门
名词划分法来描述事物: 人 和 门 ===》描述事物 在OOP中要定义类来实现
class 人{}
class 门{}
现在 还剩一个动作 “开”
那么 这个时候 开 是放在 人里面 还是门里面呢?
老师说的是:开门 门最清楚 因为 开门的时候 要配合着很里面许多零件
来一起运动 以达到开门的目的
这样 动作 ”开“ 定义的具体过程在门中 而不是人中
那么 人想开门怎么办?===》指挥门不就行了么 ===》调用门对象
class 门{
private 门轴;
private 折页;
....
public void 开门(){
门轴xxx;
折页xxx;
....
}
}
class 人{
public void 开门(门){
门.开门();
}
}
****************************
另一个你见过的情况 就是 在集合框架里面 为一个实体类 假设为Student 重写equals()方法的时候
public class Student{
.....
public boolean equals(Object o){
if(o instanceof Student)
return false;
//throw RuntimeException("Not a object of class Student!");
Student s =(Student)o;
return this.name ==s.name && this.math ==s.math && this.chinese ==s.chinese&& this.english ==s.english;
}
.....
}
按理说 是不是应该在 equals中传两个参数 (Object o1, Object o2)来表示两个学生 再来比较呢?
因为 这个时候 你写程序的位置就在Student 内部 所以 已经代表了一个Student对象了 所以 就传一个参数就行了 而不是两个参数
如果传了两个参数的话 表示 这个Student的实例能判断另外两个学生是不是相等 传了一个 表示 一个学生是不是和我(this)相等
*****************************************
你这里面也是
File conFile=new File("count.properties");
if(!conFile.exist())
{
conFile.createFile();
}
conFile.createFile();括号当中不写参数吗???我觉得应该是 conFile.createFile(conFile.Properties);
*****************************************
你在前面File 实例化的时候 是不是已经初始化File的name和一个路径相关联了? 这个时候 conFile就代表这个路径的文件对象
而且 这个对象怎么建立的 你调用的时候肯定不清楚(底层资源么 对吧 File本身最清楚 是不是) 所以 这个createFile()的动作就是
你调用的 (就像 在人的类中 调用 门.开门)
为什么不传递参数呢? 就和刚才的Student中的equals的方法一样 他不传递参数 因为 他自己就表示你要操作的文件了
如果传递了 是不是表示 我要创建别的文件?
|