Вы можете сделать что-то вроде этого.
interface Person { ... }
interface Staff extends Person { ... }
interface Student extends Person { ... }
class Tutor implements Staff, Student { ... }
class Professor implements Staff { ... }
К сожалению, вы не можете поместить логику (т. Е. Поля или неабстрактные методы) в Staff
и Student
, потому что они обадолжны быть классами, а класс Java не может расширять два класса.
Вы можете сделать Student
или Staff
(но не оба) абстрактным классом, что позволит вам поместить логику вЭто.Это было бы отчасти не элегантно, поскольку нет концептуальной причины, по которой нужно быть абстрактным классом, а интерфейсом.В идеале они должны быть абстрактными классами, но для этого вам нужно переключиться на язык с MI.
interface Person { ... }
interface Staff extends Person { ... }
abstract class Student implements Person {
long studentID;
...
}
class Tutor extends Student implements Staff { ... }
class Professor implements Staff { ... }