추상 클래스
: 아직 구체화가 덜 된 클래스
: 추상 메소드가 하나 이상 존재하는 클래스.
: 객체를 생성할 수 없는 클래스, 예외 : 익명 내부 클래스(anonymous)
: 오직 상속을 목적으로 제공.
: 상속받은 sub class도 객체를 생성할 수 없다.
-> sub class 객체 생성을 하고자 할 경우 추상메소드(구체화가 안 된 부분)를 꼭 오버라이딩 해서 사용하면 객체를 생성할 수 있다.(추상화)
: 이름만 정의되어 있는 메소드
: abstract 키워들르 꼭 붙여서 사용
: 추상 클래스도 abstract를 꼭 붙여서 만들어야한다.
추상 클래스는 객체 생성을 할 수 없으며 상속을 목적으로 사용되어지는 클래스이다.
사용이유
1. 공통되는걸 부모 클래스가 가지고 있어야함.
2. sub class에 어떤 기능을 강제로 만들게 할 때.
//추상 메소드, 클래스 예시
public abstract class AbsClassEx {
public abstract void disp(); // 추상 메소드
public void output() {
System.out.println("추상클래스");
}
}
동적 바인딩
: 부모의 레퍼런스로 자식 객체를 접근하는 방식.
: 바인딩할 때 부모들을 한번만 호출 해두면 그 아래에 코드는 굳이 바꿔 쓸 필요가 없기때문에 중복 코딩을 막을 수 있다.
public class MainTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Tri tri = new Tri(); //정적 바인딩
Rect rect = new Rect();
Circle circle = new Circle();
Area area;
area = tri; //동적 바인딩
area.draw();
area = rect;
area.draw();
area = circle;
area.draw();
}
}
인터페이스
: 다중 상속을 대체.
: 상수, 추상메소드로만 구성
: 추상 클래스보다 더 추상화 된 모델
: 식당 메뉴판과 같다
: 인터페이스를 받은 클래스에서 구현.(추상 메소드를 오버라이딩)
: 갯수제한이 클래스에 사용할 수 있다.
: 인터페이스 끼리는 상속이 가능한데 다중 상속도 가능하다.(모호성이 발생하지 않는다)
: implement 가능
: 동적 바인딩 가능
//interface의 예시.
package Inter;
public class InterTest implements A{
public static void main (String[] args) {
/* InterTest it = new InterTest();
it.disp();
it.dispB();
it.dispC();
*/
A a = new InterTest(); //동적 바인딩
a.disp();
a.dispB();
a.dispC();
B b = new InterTest();
b.dispB();
}
@Override
public void disp() {
System.out.println("dispA");
}
@Override
public void dispB() {
System.out.println("dispB");
}
@Override
public void dispC() {
System.out.println("dispC");
}
}
/////////////////////
package Inter;
public interface A extends B,C{
// 상수 + 추상 메소드
int a = 10; //상수화
void disp(); // abstract가 생략되어있다.
}
/////////////////////
package Inter;
public interface B {
void dispB();
}
//////////////////////
package Inter;
public interface C {
void dispC();
}
'빅데이터교육과정 > JAVA' 카테고리의 다른 글
DAY 10,11. Generic과 계산기 정리 (0) | 2021.02.18 |
---|---|
DAY 9. Inner Class 와 AWT 그리고 계산기 (0) | 2021.02.17 |
급여 관리 프로그램 (0) | 2021.02.12 |
DAY 6. 상속(is~A) / Override (0) | 2021.02.04 |
DAY 5. Class : has~ a 응용 (0) | 2021.02.04 |