본문으로 바로가기

추상화

category Java/java 2020. 8. 11. 10:23

추상화

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

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

: 상속을 목적으로 사용

 

추상메서드

: 메서드를 정의하면서 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();
		
	}
}
반응형

'Java > java' 카테고리의 다른 글

내부 클래스 ( 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