상속
B클래스가 A클래스를 상속 받으면 B클래스는 A클래스의 멤버 변수와 메서드를 사용할 수 있다.
객체지향 프로그램은 유지, 보수하기 편하고 프로그램을 수정하거나 새로운 내용을 추가하는 것이 유연한데, 그 기반이 되는 기술이 바로 상속이다.
ㅁ 클래스의 상속
- 상속하는 클래스 : 부모클래스, 상위클래스, 슈퍼클래스
- 상속받는 클래스 : 자식클래스, 하위클래스, 서브클래스
ㅇ 클래스 상속 문법
상속을 구현하는 경우 extends 예약어를 사용
B가 A를 상속받는다.
class B extends A{ }
ㅇ protected 예약어
상위 클래스의 변수나 메서드 중 외부 클래스에서는 사용할 수 없지만, 하위 클래스에서는 사용할 수 있도록 지정하는 예약어가 protected
ㅁ 상속에서 클래스 생성과 형변환
상위클래스를 상속 받은 하위클래스가 생성 될 때 반드시 상위 클래스의 생성자가 먼저 호출된다.
ㅇ 상위 클래스를 부르는 예약어, super
super 예약어는 하위클래스에서 상위클래스로 접근할 때 사용한다. 하위클래스는 상위클래스의 주소, 즉 참조값을 알고 있고, 이 참조값을 가지고 있는 예약어가 super
- super 예약어로 매개변수가 있는 생성자 호출하기
- 상위클래스의 멤버변수나 메서드를 참조하는 super : super.변수명(메서드명)
ㅇ 상위 클래스로 묵시적 클래스형 변환
상속 받은 하위클래스는 상위클래스를 상속 받은 것이기 때문에 상위클래스로 형 변환이 가능하다.
메서드 오버라이딩
- 상위클래스에 정의한 메서드가 하위 클래스에서 구현할 내용과 맞지 않을 경우에 하위클래스에서 이 메서드를 재정의할 수 있다.
- 오버라이딩을 하려면 반환형, 메서드 이름, 매개변수 개수, 매개변수 자료형이 반드시 같아야 한다. 그렇지 않으면 컴파일러는 다른 메서드로 인식한다.
ㅇ 가상메서드
- 상위 클래스와 하위 클래스에 같은 이름의 메서드가 존재할 때 호출되는 메서드는 인스턴스에 따라 결정된다. 이렇게 인스턴스의 메서드가 호출되는 기술을 '가상메서드(virtual method)'라고 한다.
- 일반적으로 프로그램에서 메서드를 호출한다는 것은 그 메서드의 명령 집합이 있는 메모리 위치를 참조하여 명령을 실행하는 것, 인스턴스가 달라도 동일한 메서드가 실행된다.
- 가상메서드 : 자료형에 의해 메소드가 실행되는 것이 아니라, 생성된 인스턴스에 의해서 메서드가 실행된다. 이를 가상메서드라고 한다. 자바의 모든 메서드는 가상 메서드
* 다중상속 NO!
자바는 다중상속을 지원하지 않는다. 모호성 때문에, C++은 지원한다.
다형성 오버로딩
ㅁ 다형성의 정의와 장점
- 다형성이란 하나의 코드가 여러 자료형으로 구현되어 실행되는 것을 말한다.
- 상속 받은 모든 클래스를 하나의 상위클래스로 처리를 할 수 있고, 별도의 소스코드를 모드 쓰지 않고, 상속 후 재정의 하면서 추가하면 되기 때문에 프로그램을 쉽게 확장할 수 있다. 다형성을 잘 활용하면 유연하고 구조화된 코드를 구현하여 확장성 있고 유지보수하기 좋은 프로그램을 개발 할 수 있다.
ㅇ is-a 관계와 has-a 관계
- is-A 관계 : 상속관계, 하위클래스가 상위클래스에 종속
- Has-A 관계 : 한 클래스가 다른 클래스를 소유한 관계
ㅁ 다운 캐스팅과 instanceof
- 다운캐스팅 : 상위클래스로 형 변환되었던 하위 클래스를 다시 원래 자료형으로 변환하는 것
- instanceof : 왼쪽 변수의 원래 인스턴스형이 오른쪽 클x래스 자료형인지 확인, 하위클래스로 형 변환을 명시 해야 한다. (하위클래스명)변수명
반응형
'Java | spring > 자바 객체지향' 카테고리의 다른 글
Java 프로그래밍 기본, 메소드 method (0) | 2019.05.07 |
---|---|
구현되지 않은, 추상클래스(abstract class) (0) | 2019.05.07 |
Java Class 구조, 접근명시자(static, public) (0) | 2019.05.07 |
객체지향과 절차지향 프로그래밍?! (0) | 2019.05.06 |
Java, 객체지향 프로그래밍! (0) | 2019.05.03 |
댓글