延边朝鲜族狗肉馆:Java 中的一个问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/20 07:14:09
类 A 类 B 类C

A, B ,分别调用 c 里面的方法

c 里面的这个方法 首先 要判断 一下 是 类A 调用的 还是类 B 调用的

如何判断
A,B C 类没有任何 继承关系

c类的那个方法可以这样写:
void c_method(Object source,other_parameters){
if(source instanceof A)
....
if(source instanceof B )
....
}

A B C有没有继承关系?

用类名不就可以看出来

类A:
public class A{

public void a(){
test1 q = new test1();
q.judgeClass(this.getClass());
}
public static void main(String[] args) {

}
}

类B:
public class B{

public void a(){
test1 q = new test1();
q.judgeClass(this.getClass());
}
public static void main(String[] args) {

}
}
类C:
public class C{
public void judgeClass(Class c){
System.out.println(c.getName());
}
}

先假设你用的是java而不是面向过程的什么语言。

然后看一下这个方法的设计思想。一个方法,应该是一个最小功能单位,一个理想的方法应该很轻松可以找到合适的名字——就是说,你必须要确定这个方法做什么,同时保证它做的是最基本的事情。为什么?复用!面向对象最基本的思想,如果你的方法包含了很多行代码,除非你的程序非常非常简单~~~否则十有八九会有“代码臭味”——你可以从程序中找出长得很像的代码。另外,“做好自己的本职工作,别去管别人干什么”也是方法设计时要注意的,方法毕竟是供别人调用的。

如果你把java当面向过程来用,就当我什么也没说。

现在你这个方法希望搞清楚是谁调用了它,那就意味着方法要有“如果A调用,怎么怎么样;如果B调用,怎么怎么样”这样的代码,这两种实现很有可能张相差不多~~因为他们在同一个方法里。所以就要考虑一下,某些代码是否真的合适放在C类中——但是如果必须这样做的话,有很多简单的办法可以做到,比较通用的做法楼上已经给出来了。

谁试着举一个例子说明这个问题。