"안녕하세요, 아미고! 오늘 당신은 몇 가지 발견을 할 것입니다. 오늘의 주제는 드럼 롤, 제발 인터페이스입니다. "
"그래. 날이 너무 좋아서 집에 목욕하러 가야겠다."
" 인터페이스 는 추상화 및 다형성의 자식입니다. 인터페이스는 모든 메서드가 추상인 추상 클래스와 매우 유사합니다. 클래스와 동일한 방식으로 선언되지만 키워드는 입니다. 다음은 몇 가지 예입니다. interface
"
암호 | 설명 및 사실 |
---|---|
|
1) 이라는 단어 대신에 class 를 씁니다 interface .
2) 추상 메서드만 포함합니다(추상이라는 단어를 추가할 필요 없음). 3) 실제로 인터페이스의 모든 메소드는 공개됩니다. |
|
인터페이스는 다른 인터페이스만 상속할 수 있습니다.
많은 부모 인터페이스를 가질 수 있습니다. |
|
클래스는 여러 인터페이스(및 단 하나의 클래스)를 상속할 수 있습니다. 이 상속을 표시하기 위해 키워드를 사용합니다 implements .
이 즉, |
"흥미롭군요. 그런데 인터페이스가 왜 필요한가요? 언제 사용되나요?"
"인터페이스는 클래스보다 두 가지 강력한 이점이 있습니다."
1) 메소드 구현에서 "메소드 정의"의 분리.
이전에 다른 클래스가 자신의 클래스의 메서드를 호출하도록 허용하려면 해당 메서드를public
. 특정 메소드가 자신의 클래스에서만 호출되도록 하려면 로 표시해야 합니다 private
. 즉, 클래스의 메서드를 «모두를 위한»과 «나만을 위한»의 두 범주로 나누고 있습니다.
인터페이스를 사용하여 이러한 분리를 더욱 강화할 수 있습니다. 우리는 두 번째 "나만을 위한 수업"을 계승할 특별한 "모두를 위한 수업"을 만들 것입니다. 대략 다음과 같습니다.
class Student
{
private String name;
public Student(String name)
{
this.name = name;
}
public String getName()
{
return this.name;
}
private void setName(String name)
{
this.name = name;
}
interface Student
{
public String getName();
}
class StudentImpl implements Student
{
private String name;
public StudentImpl(String name)
{
this.name = name;
}
public String getName()
{
return this.name;
}
private void setName(String name)
{
this.name = name;
}
}
public static void main(String[] args)
{
Student student =
new Student("Alibaba");
System.out.println(student.getName());
}
public static void main(String[] args)
{
Student student =
new StudentImpl("Ali");
System.out.println(student.getName());
}
클래스를 인터페이스 와 인터페이스를 구현하는 클래스의 두 부분으로 나눕니다 .
"그래서 장점이 뭐야?"
"동일한 인터페이스는 서로 다른 클래스에 의해 (상속) 구현될 수 있습니다. 그리고 각 클래스는 고유한 동작을 가질 수 있습니다. ArrayList 와 LinkedList가 List 인터페이스의 두 가지 다른 구현인 것처럼 말입니다 . "
따라서 우리는 다른 구현뿐만 아니라 구현을 포함하는 클래스도 숨깁니다(코드의 모든 곳에서 인터페이스를 사용할 수 있음). 이를 통해 프로그램이 실행되는 동안 일부 개체를 다른 개체로 매우 유연하게 교체할 수 있으므로 개체를 사용하는 클래스에 대한 지식 없이도 개체의 동작을 변경할 수 있습니다.
다형성과 함께 이것은 매우 강력한 기술입니다. 현재 우리가 왜 이것을 해야 하는지는 분명하지 않습니다. 인터페이스가 삶을 크게 단순화하는 방법을 이해하려면 수십 또는 수백 개의 클래스로 구성된 프로그램을 먼저 접해야 합니다.
2) 다중 상속.
Java에서 각 클래스는 하나의 상위 클래스만 가질 수 있습니다. 다른 프로그래밍 언어에서 클래스는 종종 여러 부모 클래스를 가질 수 있습니다. 이것은 매우 편리하지만 많은 문제를 야기하기도 합니다.
Java는 절충안을 제공합니다. 여러 클래스를 상속할 수 없지만 여러 인터페이스를 구현할 수 있습니다. 인터페이스에는 여러 상위 인터페이스가 있을 수 있습니다. 클래스는 여러 인터페이스를 구현하고 하나의 상위 클래스만 상속할 수 있습니다.
GO TO FULL VERSION