Jar*_*ede 3 java oop inheritance object
有没有办法压缩继承的类来发现哪些函数属于哪个类?
如果你有一个类:
public class Person
{
public String name;
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
}
Run Code Online (Sandbox Code Playgroud)
和一个继承的类
public class Worker extends Person
{
public String job;
public void setJob(String job){
this.job = job;
}
public String getJob(){
return this.job;
}
}
Run Code Online (Sandbox Code Playgroud)
当您实例化Worker时,有没有办法找出Set/GetName属于Person类?
我已经看到了使用接口查找此信息的建议,但我不确定界面如何最好地用于显示此处的函数关系.是否有任何作弊能够引用继承类中的特定类?
编辑:
为了回答我为什么要这样做:我基本上希望能够遍历对象中的方法并忽略来自某个类的方法,在这种情况下我想忽略Person类.
我的真实世界的例子并不像这样简单,但我想不出更好的方法来确定哪些方法属于哪个类而不"扁平化"它们.
类中的isBridge方法Method可用于检查方法是否在类Person或Worker类中声明.
public static void main(String[] args)
{
Worker worker = new Worker();
Class clazz = worker.getClass();
Method[] methods = clazz.getDeclaredMethods();
for(Method method :methods)
{
System.out.println(method.getName()+ " is in Worker: "+ !method.isBridge());
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码将产生如下输出:
setName is in Worker: false
getName is in Worker: false
setJob is in Worker: true
getJob is in Worker: true
Run Code Online (Sandbox Code Playgroud)