2009-04-23 6 views
-1

В C#, это часто имеют такие методы, как это:интерфейсы в Java

public IPerson GetPerson() 
{ 
    // do stuff 
    return new Person(..); 
} 

, где «IPerson» представляет собой интерфейс, используемый Person, SpecialPerson и т.д. Другими словами, хотя описанный выше способ возвращает Person , стратегия стратегии может быть реализована таким образом, что возвращается SpecialPerson вместо Person, при условии, что все они используют интерфейс IPerson.

Возможно ли это на Java?

+0

Я предполагаю, что я спрашиваю сводится к тому: может интерфейс в Java («IPerson» в данном случае) возвращается из метод или передается в качестве параметра? Когда я занимался Java, это вообще не похоже на общий шаблон, тогда как в .NET-мире мы делаем это все время. Просто интересно, было ли это ограничение языка. – Garrett

+2

Googling для просто «Java-интерфейсов» сказал бы вам, что в Java это практически то же самое. –

+0

@Garrett: Конечно, вы можете это сделать. В этом отношении оба языка работают одинаково. –

ответ

7

Да. Java также имеет интерфейсы.

3

Я считаю, что это почти то же самое, кроме Java использует ключевое слово «реализует» для интерфейсов.

2

Да, Java имеет интерфейсы так же, как C#:

public interface IPerson { 
    ... 
} 
1

Эквивалент Java будет:

public Person getPerson() 
{ 
    // do stuff 
    return new SpecialPerson(..); 
} 

Где Person является интерфейс Java (предваряя имена интерфейсов с буквой "Я" конвенция из программирования COM, поэтому не подходит для Java).

+0

Я использую соглашение I prefix в Java, так что легче определить типы файлов, не открывая их (например, в браузере Eclipse). Я также использую A для абстрактных классов. Просто помогает мне разбираться в вещах. Хорошая вещь о соглашениях заключается в том, что вы можете использовать свои собственные. – Dave

+1

Если вы правильно проектируете, вам не нужно заботиться о том, чтобы у вас был тип интерфейса или другой тип. –

+0

@ Мартин - точно! –

4

да, это в значительной степени то же самое ... Например:

// Interface 
public interface IPerson { 
    public String getName(); 
} 

// Implementation of interface - NB "implements" keyword 
public class Person implements IPerson { 
    private final String myName; 

    public Person(String name) { 
     myName = name; 
    } 

    public String getName() { 
     return myName; 
    } 
} 

// Method returning interface 
public IPerson getPerson(String name) { 
    return new Person(name); 
} 
Смежные вопросы