-4

Я в настоящее время находится в режиме разработки для этой проблемы:Как я могу реализовать этот интерфейс Java?

Внедрите интерфейс Speaker, который предопределен. Создайте три класса, которые реализуют Speaker различными способами. Создайте класс драйвера, основной метод которого реализует некоторые из этих объектов и проверяет их возможности.

Как бы я хотел спроектировать эту программу, и они перешли на стадию кодирования. Я хочу использовать эти три класса для реализации класса интерфейса Speaker: «Политик», «Лектор» и «Пастор». Методы, которые я хочу использовать это:

public void speak(); public void announce (String str);

Теперь для моего дизайна и кодирования, как бы я идти о объявить и ссылку на объект переменной и иметь эту переменную есть несколько ссылок?

+0

Просто догадаться: «реализует спикер» –

+4

Прошли ли вы через учебные пособия о том, как использовать интерфейсы? Там все будет объяснено. Мы не слишком хорошо переписываем эти учебники и гораздо лучше можем помочь вам с ошибками после того, как вы сделали попытку - что-то, что я настоятельно призываю вас сделать. –

+0

(Подсказка: Предположим, что реализация интерфейса похожа на подкласс класса родителя.) –

ответ

0

См. "Что такое интерфейс?" http://docs.oracle.com/javase/tutorial/java/concepts/interface.html Это, мы надеемся, поможет вам начать работу с основами, которые вы ищете.

Начало реализации будет выглядеть примерно следующее ...

class Politician implements Speaker 
{ 
    public void speak() 
    { 
    // Method implementation 
    } 
    public void announce (String str) 
    { 
    // Method implementation 
    } 
} 
class Lecturer implements Speaker 
{ 
    public void speak() 
    { 
    // Method implementation 
    } 
    public void announce (String str) 
    { 
    // Method implementation 
    } 
} 
class Lecturer implements Speaker 
{ 
    public void speak() 
    { 
    // Method implementation 
    } 
    public void announce (String str) 
    { 
    // Method implementation 
    } 
} 

public static void main(String [] args) 
{ 
    Speaker s1 = new Politician(); 
    Speaker s2 = new Pastor(); 
    Speaker s3 = new Lecturer(); 
    // Do something... 
} 
+0

Большое вам спасибо! – brennaboo

1

Все просто. Вкратце:

class ClassA implements Speaker 
{ 
    public void speak(){ 
      System.out.println("I love Java") ; //implement the speak method 
    } 
} 
class ClassB implements Speaker //follow the example of ClassA 
class ClassC implements Speaker //same as above 

Speaker[] speakers = new Speakers{new ClassA(),new ClassB(),new ClassC()} ; 

for(Speaker speaker: speakers) 
    speaker.speak(); //polymorphically call the speak() method defined in the contract. 
+0

Итак, для моих 3-х классов-докладчиков, как бы я мог быть более конкретным, но все же использовать методы talk() и announce(). – brennaboo

+0

Когда ваш класс динамиков реализует интерфейс, он должен обеспечить реализацию. В примере ClassA я говорю, что ClassA будет говорить, распечатывая «Я люблю Java». –

+0

Также, если вы заметили, как я создаю массив динамиков, а не массив ClassA/B/C. –

-1

Используйте Factory Method Design Pattern .. Проверить эту статью в http://en.wikipedia.org/wiki/Factory_method_pattern

Ваш код может выглядеть примерно так, если вы используете шаблон Factory

public class SpeakerFactory { 

     enum SpeakerEnum { POLITICIAN, LECTURER, PASTOR} ; 
     Speaker getSpeaker(SpeakerEnum speakerType) { 
      switch (speakerType) { 

      case POLITICIAN : return new Politician(); 

      .... 

      } 
     } 

}