다형성

-다형성은 상속관계에서만 사용 가능함.

 

다형성 공식

- 부모클래스 변수명 = new 자식생성자();

- 다형성 : 객체를 만들 수 있는 다양한 방법

- 자료형 != 생성자명

- 다형성을 사용하기 위해서는 상속관계가 성립해야 함

- 다형성으로 객체를 만들면, 자료형이 통일됨

- 자식클래스가 가지고 있는 고유의 자원에 접근이 안됨

- if문을 통하여 instanceof 키워드를 통해 true값을 받으면 부모클래스를 자식클래스로 형전환시킨 후 대입시켜서 사용.

 

Dog tempDog = null;
if(dog2 instanceof Dog) {
       tempDog = (Dog)dog2;
       tempDog.onlyReadChild();
}

ㄴ  상기 코드는 Dog형태의 tempDog를 선언한 후,

if문을 통해 dog2가 Dog형인지를 묻고,

true값일때 tempDog에 Dog로 형변환시킨 dog2를 대입.

그 이후 Dog로 형변환된 dog2가 대입된 tempDog를 통하여 Dog클래스에만 있는 onlyReadChild();를 실행함.

 

추상화 : 추상 클래스 + 추상 메서드를 만드는 기술

 

1. 추상 메서드(abstract)

- 지금까지 학습한 메서드는 구상메서드(concrete method)

- {}(중괄호) 안의 내용을 보면 어떤 기능이 있는지 알 수 있다.

- 추상 메서드는 {}가 없는 메서드

- public abstract void me2();

- 와 같이 abstract 키워드로 추상메서드임을 선언

- 추상메서드를 하나라도 갖고 있는 클래스는 추상 클래스가 되어야 함

- 추상메서드를 사용하는 이유 : me1 ~ me8 메서드 중 자식클래스에서 오버라이드해야하는 메서드는 무엇인가?

ㄴ 자식클래스에서 오버라이딩을 하게끔 알려주기 위해서

- 추상 클래스를 사용하는 이유 : 유지보수를 위해 임의로 만들어진 부모클래스로 객체를 만들지 못하게 하기 위해서(하지 말라고 알려주기 위해서)

 

2. final

- 부모클래스가 가지고 있는 메서드 중에서 자식키워드가 절대로 오버라이딩해서는 안 될 경우 사용

- final이 클래스에 붙어있다면 해당 클래스는 부모클래스가 될 수 없음

- final이 변수에 붙으면 해당 변수는 더이상 변수가 아니라 상수가 됨(값을 변경할 수 없음)

ㄴ final을 통해 상수(변경불가값)를 선언할 경우 상수명을 전부 대문자로 표기, 띄어쓰기는 언더바(HELLO_WORLD)를 사용

'JAVA > JAVA 기본' 카테고리의 다른 글

JAVA 스캐너클래스, DTO클래스, 내/외부클래스  (0) 2017.10.11
JAVA 인터페이스  (0) 2017.10.11
JAVA 상속  (0) 2017.10.11
JAVA String 클래스에 대하여  (0) 2017.10.11
JAVA 배열  (0) 2017.10.11

+ Recent posts