просто для пояснения, что статический метод наследуется в подклассе, но он не полиморфен, поскольку вы не можете переопределить их, хотя вы можете скрыть его, когда у вас есть метод с такой же сигнатурой в подклассе.и если вы хотите сделать вещи чище, вам не нужно создавать пустой статический класс.Вот мои два предложения, основанные на том, чего вы хотите достичь.1. в случае, если инструкция LeashInstruction одинакова для всех дрессировщиков, вы можете сделать следующее:
public class PetTrainer
{
public PetTrainer(...)
{...}
}
и:
abstract class LeashInstructionAbstract {
public static void giveTreat() {}
}
в случае, если поведение в классе PetTrainer изменится, тогда я бы предложил сделать следующее (интерфейс с абстрактными методами):
открытый класс PetTrainer {LeashInstructionImpl leashInstruction = new LeashInstructionImpl ();public PetTrainer () {}
public static class LeashInstructionImpl implements LeashInstruction {
@Override
public void giveTreat() {
//somthing
}
}
// Just for testing
public static void main(String[] args) {
PetTrainer petTrainer = new PetTrainer();
petTrainer.leashInstruction.giveTreat();
}
}
, и LeashInstruction будет:
interface LeashInstruction {void giveTreat ();// представьте больше
}
Надеюсь, что это поможет.