2014-02-07 3 views
0

Хорошие разработчики.Возможно ли, чтобы класс реализовал интерфейс и выполнил логику за этим интерфейсом.

Так есть проблема:

мне нужен мой класс MyClass реализует интерфейс IMyInterface метода doSomething(); и переопределяет метод doSomethiing() другого класса давайте называть его TheOtherClass также реализует IMyInterface и переопределяет метод doSomethiing() и плюс реализовать некоторую логику это doSomething() метод (In TheOtherClass).

Вопрос:

  • Как я могу сделать doSomething() метод, реализованный в MyClass триггером doSomething() от TheOtherClass автоматически
  • Кроме того, если MyClass привлеченным Я хочу doSomethig() метод вызова автоматически ??
+0

Вы можете получить общую реализацию [class] или извлечь «что-то» и использовать инкапсуляцию. – user2864740

+0

Я думаю, что конструктор 'TheOtherClass' и' MyClass' является решением для * автоматического триггера * ... –

ответ

1

Я думаю, что-то вроде этого.

public class TheOtherClass implements IMyInterface{ 
    public void doSomething(){} 
} 

public class MyClass implements IMyInterface{ 

// Instance initialization block: 
// Runs before the constructor each time you instantiate an object 
{ 
    this.doSomething() 
} 

    public MyClass(){ 
    } 

    IMyInterface theOtherClass = new TheOtherClass(); 

    public void doSomething(){ 
    theOtherClass .doSomething(); 
    //Add more logic here 
    } 
} 

Вместо DoSomething вызова в конструкторе, как в этой теме link я предлагаю использовать блоки инициализации экземпляра читать далее here

+0

В любом случае это жесткое кодирование. Я бы предпочел добавить публичный класс MyClass реализует IMyInterface для MyClass и только переопределяет doSomethig(), это он. Является ли это возможным? Я знаю, что я использую Spring и ypu реализовать интерфейс с методом, и они будут запускаться автоматически. Также мои пожелания – user3013553

+0

Вы никогда ничего не говорили о весне XD, которые меняют контекст – Koitoer

+0

Я предлагаю использовать AOP для вызова операций на случай определенных методов или конструкторов. Обновите свой вопрос или откройте новый, выберите правильный вариант. – Koitoer

0

Вы можете попробовать это

1. make MyClass sub-class of TheOtherClass 
2. call to super.doSumething() in MyClass's doSomething() method. 

это будет служить оба ваших целей , И b'coz это будет переопределять, вы можете изменить логику в методе. для получения более подробной информации click here

Смежные вопросы