Нет, вы не можете этого сделать.Вместо этого вы можете убедиться, что базовые классы (Publisher
в вашем случае) имеют конструкторы копирования , так что вы можете передать экземпляр Publisher
конструктору Author
в скопируйте его состояние в строящийся объект:
class Publisher {
private String pubName;
public Publisher(Publisher other) { // ***
this.pubName = other.pubName; // ***
} // ***
//10-15 other members here
public String getPublisher(){
return pubName;
}
public void setName(String name){
pubName = name;
}
}
class Author extends Publisher{
private String authorName;
public Author(Publisher pub) { // ***
super(pub); // ***
} // ***
//5-10 other members here
public String getAuthor(){
return authorName;
}
@Override
public void setName(String name){
authorName = name;
}
}
Итак:
Publisher pub1 = new publisher();
pub1.setName("Amanda Book House");
Author auth1 = new Author(pub1); // *** *Copies* the state from pub1
Важно отметить, что это делает copy ;если вы измените состояние pub1
позже (например, измените имя), это не повлияет на состояние auth1
.
Примечание: вы, очевидно, можете сделатьчто вам нравится в вашем собственном коде, но при обращении за помощью, пожалуйста, следуйте стандартным соглашениям об именах Java, важно, чтобы ваш код читался другими.
Примечание 2: Если у вас есть средства доступа к чему-либо (например, pubName
), переменная экземпляра, содержащая ее, должна быть закрытой.
Я проделал обе эти вещи в приведенном выше.