본문으로 바로가기

추상화

category Javajava 5년 전

추상화

: 구체적인 개념으로부터 공통된 부분들만 추려내어 일반화 할 수 있도록 하는 것

: 다시 말해서 일반적으로 사용할 수 있는 단계가 아닌 아직 미완성적 개념

: 상속을 목적으로 사용

 

추상메서드

: 메서드를 정의하면서 brace({})를 생략하여 실상 메서드가 하는 일(body)이 없이

: semicolon(;)으로 문장의 끝을 나타내었다.

: 그리고 abstract라는 예약어를 통해 현 메서드가 추상 메서드임을 명시하였다.

: 강제성을 부여한다.

: 동적 바인딩을 위해서 사용한다. ( 부모의 레퍼런스로 자식을 접근한다. )

  (동적바인딩은 부모가 알고 있는 것만 접근할 수 있다.)

: 내가 갖고 있어야할 공통사항이지만(같은 목적이지만) 내가 값을 정할 수 없을 때 이름만 제공한다.

public abstract void absTest();

  추상 클래스
  : 추상 메소드를 하나 이상 가지고 있는 클래스
  : 추상 메소드는 문법적으로 아무내용을 가지고 있지 않는 메소드
  : 추상 메소드 사용 목적
  1. 부모가 공통된 사항을 가지고 있어야 하기 때문에 이름을 제공
  2. 강제성을 부여하기 위해
  3. 정적 바인딩, 동적 바인딩 중 어느 것을 사용해도 사용자가 사용할 수 있게 제공하기 위해서

public abstract class AbsEx{	}

 

 

public abstract class AbsClass { // 추상클래스
public abstract void javaStudy(); // 추상메서드
}
public class AbsSubClass extends AbsClass{
@Override
public void javaStudy() {
System.out.println("인강이 최고지...");
}
}
public class MeongJa extends AbsClass {
@Override
public void javaStudy() {
System.out.println("책이 최고지...");
}
}
public class MainTest {
public static void main(String[] args) {
AbsSubClass asc = new AbsSubClass();
asc.javaStudy();
MeongJa mj = new MeongJa(); // 정적 바인딩.
mj.javaStudy();
// 동적 바인딩
// : 부모의 레퍼런스 변수로 자식의 객체를 전급
AbsClass ac; // 부모의 레퍼런스 변수
ac = asc; // 동적 바인딩
ac.javaStudy();
ac=mj;
ac.javaStudy();
}
}
반응형

Javajava카테고리의 다른글

내부 클래스 ( Inner Class )  (0) 2020.08.11
인터페이스(Interface)  (0) 2020.08.11
final  (0) 2020.08.11
상속  (0) 2020.08.10
배열 (Array)  (0) 2020.08.06