2010-11-10 2 views
0

У меня есть эта проблема. Im работает с некоторой библиотекой, и мне нужно создать свойство класса, который является интерфейсом.Java - Проблема с абстракцией

  • Если я сделаю this.createITextArea(), он создаст объект.
  • Если я делаю ITextArea area = new ITextArea(), я не могу, потому что класс является абстрактным.

На самом деле, мне нужно отправить его с функцией. Но с первым методом я не могу, или я не знаю, как получить переменную для этого класса. Как я могу это передать?

мне нужно нечто вроде area=this.createITextArea(), так что я могу использовать переменную область в функции ...

Надежда вопрос ясен ...

ответ

4

Так что проблема с этим:

ITextArea area = this.createITextArea(); 

?

+0

YEAH! это камни. Спасибо чувак! – markzzz

2

Вам НЕ нужно создать экземпляр интерфейса , Вам нужно создать экземпляр класса, который реализует интерфейс. Найдите или напишите такую ​​реализацию, создайте ее, а затем назначьте ее переменной.

3

Несмотря на вопрос, который немного неясно:

т.д .:

ITextArea area = this.createITextArea(); 
someObj.someMeth(area); 

или инлайн:

someObj.someMeth(this.createITextArea()); 

Я бы рекомендовал дальнейшего чтения на Java Интерфейсы.

2

Экземпляр класса never Интерфейс. Метод может возвращать тип интерфейса, но «вещь», которую вы получаете через метод, всегда является объектом, который реализует этот интерфейс.

несколько простых примеров, чтобы проиллюстрировать его:

public static main(String[] args) { 
    List list = createList(); 
} 

public static List createList() { 
    return new ArrayList(); 
} 

Метод createList возвращает тип интерфейса (List) но он возвращает экземпляр класса (реального ArrayList). Поэтому в конце локальная переменная list содержит ссылку на этот экземпляр ArrayList.

Назад к вашему примеру: Предполагая, что вы есть интерфейс

public interface ITextArea { /* methods */ } 

и хотите создать объект «который реализует этот интерфейс», то вам нужен другой класс как

public class TextArea implements ITextArea { /* methods */ } 

и вы» Я хочу создать экземпляры этого конкретного класса.

+0

действительно хорошее объяснение! Спасибо чувак! – markzzz

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