[혼공자] 상속 요약본
복습
https://shins99.tistory.com/91
[혼공자] 클래스 요약본
복습 https://shins99.tistory.com/90 [혼공자] 참조타입 요약본 복습 https://shins99.tistory.com/89 [혼공자] 조건문과 반복문 요약본 복습 https://shins99.tistory.com/88 [혼공자] 연산자 요약본 복습 https://shins99.tistory
shins99.tistory.com
상속
- 현실에서 상속은 부모가 자식에게 재산(자산)을 물려주는 것
- 코딩에서 상속은 부모클래스가 자식클래스에게 속성/함수를 물려주는 것
l 상속 : 부모 클래스의 속성과 함수를 자식 클래스에서 사용할 수 있도록 함
l 함수(메소드) 재정의 : 부모 함수를 자식 클래스에서 다시 정의하는 것
l final 클래스 : final 키워드로 선언된 클래스는 부모 클래스로 사용할 수 없음
l final 함수 : final 키워드로 선언된 함수는 재정의할(오버라이딩) 수 없음
타입 변환과 다형성
- 기본 자료형에 자동타입변환/강제 타입변환이 있듯이, 클래스에도 자동타입변환/강제타입변환이 있음, 이것을 이용해 다형성을 구현함
l 클래스 타입 변환 : 다른 클래스 타입으로 객체를 대입하는 것(저장하는 것)
l 자동 타입 변환 : 자식 객체를 부모 타입 객체에 대입할 때는 자동으로 타입이 변환됨
l 강제 타입 변환 : 자식 객체를 부모 타입으로 변환된 상테에서 다시 원래의 자식 타입으로 변환하고자 할 때 캐스팅() 연산자를 사용해서 강제 타입 변환됨
l instanceof 연산자 : 객체가 어떤 타입인지 조사할 때 instanceof 연산자를 사용
(주로 강제 타입 변환 전에 변환이 가능한 지 조사할 때 사용함)
l 다형성 : 객체 사용 방법(함수 호출방법)은 동일하지만 실행결과가 다양하게 나오는 성질
l 다현성 구현 : 함수(메소드)재정의 + 타입변환
부모 타입으로 자동 타입 변환 후에 ( 자식클래스에 재정의된 함수가 있다면 ) 그 함수를 호출하면 재정의된 자식 함수가 호출됨
l 다형성 장점 : 유연한 코딩으로 유지보수성 및 코딩 생산성을 향상시킴
ex) 커피머신 프로그램을 만든다고 가정한다.
커피를 만드는 방법은 에스프레소, 아메리카노, 모카 등 많다.
각각의 에스프레소.make(), 아메리카나.make(), 모카.make() 각각 만들고 다른 수십개의 프로그램에서 호출하게 만드는 것 보다, 미래의 변화를 고려할 때,
커피.make()를 다른 수십개의 프로그램에 호출하게 만들고 실행클래스에서(1개) 커피 = new 에스프레소(); 등으로 다형성 을 이용하는 것이 효율적인 코드임
추상 클래스
- 공통되는 특성을 추출해서 공통 클래스를 만드는데 주로 추상 클래스 등을 이용함
l 추상클래스 : 클래스들의 공통적인 속성과 함수를 추출해서 선언한 클래스
l 추상 함수 : 추상 클래스에서만 선언할 수 있고, 함수의 선언부만 있는 함수를 말함.
추상 함수는 자식 클래스에서 재정의되어 실행 내용을 결정해야 함
l 실체클래스 (==자식클래스 ) : 추상 클래스의 모든 특성을 물려받고 추가적인 특성를 가질 수 있음
l 목적 : 공통된 속성과 함수의 이름을 통일할 목적
( 객체마다 재각각인 함수/속성 이름 : 난잡 )
l 실체클래스를 작성할 때 시간 절약(추상 클래스의 속성/함수 물려받음)