다형성
-다형성은 상속관계에서만 사용 가능함.
다형성 공식
- 부모클래스 변수명 = 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 |