在C#中,通常有这样的方法:
public IPerson GetPerson()
{
// do stuff
return new Person(..);
}
其中“IPerson
”是Person
,SpecialPerson
等使用的界面。换句话说,虽然上述方法返回Person
,但策略模式可以如果他们都使用SpecialPerson
界面,则实施Person
代替IPerson
。
这种事情在Java中是否可行?
答案 0 :(得分:7)
是。 Java也有接口。
答案 1 :(得分: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);
}
答案 2 :(得分:3)
我认为它几乎是相同的,除了Java使用接口的“implements”关键字。
答案 3 :(得分:2)
是的,Java的接口就像C#:
public interface IPerson {
...
}
答案 4 :(得分:1)
Java等价物将是:
public Person getPerson()
{
// do stuff
return new SpecialPerson(..);
}
其中Person
是Java接口(带有字母“I”的接口名称前缀是COM编程的约定,因此不适合Java)。