如何压扁继承的类?

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类.

我的真实世界的例子并不像这样简单,但我想不出更好的方法来确定哪些方法属于哪个类而不"扁平化"它们.

Rah*_*ate 6

类中的isBridge方法Method可用于检查方法是否在类PersonWorker类中声明.

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)