Есть ли способ сгладить унаследованные классы, чтобы определить, какие функции принадлежат классу?Как сгладить унаследованный класс?
, если у вас есть класс, как:
public class Person
{
public String name;
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
}
и унаследованный класс как
public class Worker extends Person
{
public String job;
public void setJob(String job){
this.job = job;
}
public String getJob(){
return this.job;
}
}
При создании экземпляра работник, есть способ узнать, что Set/GetName принадлежит лицу класс?
Я видел предложения об использовании интерфейса, чтобы найти эту информацию, но я не уверен, как интерфейс лучше всего будет использовать для отображения функций отношений здесь. Могут ли какие-либо читы ссылаться на определенные классы в унаследованном классе?
EDIT:
Чтобы ответить, почему я хотел бы сделать это: Я в принципе хочу, чтобы иметь возможность перебрать методы в объекте и игнорировать те, которые приходят из определенного класса, в данном случае я хочу игнорировать класс Person.
Мой пример настоящего мира не так прост, как этот, но я не мог придумать лучшего способа разработки методов, которые относятся к какому классу без их «сглаживания».
Можете ли вы объяснить, почему вам это нужно? – BobTheBuilder
@ Jarede: Вы можете проверить отражение в java. Вы можете проверить объявленные методы, например: http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getDeclaredMethod(java.lang.String, java.lang.Class ...) – Jayan
Комментарий Jayan - это правильно. Если вы используете Eclipse, инспектор объектов (который показывает методы, доступные для объекта после записи точки '.'), выделяет жирным шрифтом методы, объявленные в более конкретном классе (так, для переменной« Рабочий », 'setJob' будет выделен жирным шрифтом, а' setName' не будет) – SJuan76