티스토리 뷰
인터페이스 - implements로 부름
상속할 클래스(부모클래스) - extends로 부름
------------------------------------------------------------------
[CASE 1] - 자식클래스가 1개인 경우! (여기서 자식클래스는 클래스B를 말함)
1) 부모클래스 A
public class A {
public String name;
public String setName(String name) {
this.name = name;
}
}
2) 인터페이스 B
public interface B {
public String getName(); //안에 구현내용이 없는 메소드 선언했음 -> 이건 B라는 인터페이스를 implements 하는 클래스에서 구현내용을 정의해줘야함
}
3) A 클래스를 상속받고, B 인터페이스를 사용하는 클래스 C
public class C extends A implements B {
public String getName() {
return this.name; // 바로 여기서 위에 인터페이스에서 선언만하고 정의내용은 없는 getName을 정의해줌.
}
}
------------------------------------------------------------------
[CASE 2] - 자식클래스가 2개인 경우 (클래스 C,D)
1) 부모클래스 A
public class A {
public String name;
public String setName(String name) {
this.name = name;
}
}
2) 인터페이스 B
public interface B {
public String getName(); //안에 구현내용이 없는 메소드 선언했음 -> 이건 B라는 인터페이스를 implements 하는 클래스에서 구현내용을 정의해줘야함
}
3) A 클래스를 상속받고, B 인터페이스를 사용하는 클래스 C - 첫번째 자식클래스
public class C extends A implements B {
public String getName() {
return this.name; // 바로 여기서 위에 인터페이스에서 선언만하고 정의내용은 없는 getName을 정의해줌.
}
}
4) A 클래스를 상속받고, B 인터페이스를 사용하는 클래스 D - 두번째 자식클래스
public class D extends A implements B {
public String getName() {
return this.name; // 바로 여기서 위에 인터페이스에서 선언만하고 정의내용은 없는 getName을 정의해줌.
}
}
--> 그런데 여기서 보면, 클래스 C 와 D는 똑같이 A 클래스를 상속받으면서도 getName() 이라는 메소드 선언, 정의를 각 각 따로따로 함. --> 이것을 공통적으로 사용하기 위해 부모클래스인 클래스 A에 getName 이라는 메소드를 정의해주면, 훨씬 효율적이게 됨.
------------------------------------------------------------------
[CASE 3] - 자식클래스들에게 공통된 메소드를 선언 및 정의해야 하는 경우. (부모클래스에 해주면됨)
1) 부모클래스 A
public class A {
public String name;
public String setName(String name) {
this.name = name;
}
public String getName() {
return this.name; // 여기에 이렇게 하나만 선언,정의 해주면 효율적임.
}
}
2) 인터페이스 B
public interface B {
public String getName(); //안에 구현내용이 없는 메소드 선언했음 -> 이건 B라는 인터페이스를 implements 하는 클래스에서 구현내용을 정의해줘야함
}
3) A 클래스를 상속받고, B 인터페이스를 사용하는 클래스 C - 첫번째 자식클래스
public class C extends A implements B {
// 원래 getName() 메소드를 선언 및 정의해뒀지만, 부모클래스인 A 클래스에 공통적으로 선언해줘서 여긴 해줄필요 없어짐
}
4) A 클래스를 상속받고, B 인터페이스를 사용하는 클래스 D - 두번째 자식클래스
public class D extends A implements B {
// 원래 getName() 메소드를 선언 및 정의해뒀지만, 부모클래스인 A 클래스에 공통적으로 선언해줘서 여긴 해줄필요 없어짐
}
'Java' 카테고리의 다른 글
메소드에 변수값을 전달 vs 객체 자체를 전달 (0) | 2017.02.06 |
---|---|
자바 추상클래스, 추상메소드 (0) | 2017.02.06 |
접근제어자 (0) | 2017.02.06 |
자바의 생성자 (constructor) (0) | 2017.02.06 |
자바 기초 (0) | 2017.02.06 |