
상속(inheritance)이란 ?
- 상속은 캡슐화, 추상화와 더불어 객체 지향 프로그래밍을 구성하는 중요한 특징 중 하나로 상위 클래스 (부모 클래스)의 맴버변수와 메서드를 하위클래스 ( 자식 클래스) 가 물려받는 기술을 의미한다.
자바에서 상속을 구현할 때는 extends 예약어를 사용한다.
포함관계 : 포함관계는 상속과 같은 방식으로 관계를 맺는 게 아닌 클래스 내에서 다른 클래스의
인스턴스를 생성하면 포함 관계라고 볼 수 있다. 쉽게 말해 한 클래스의 맴버로 참조변수를 선언하는 것
class Circle {
int x;
int y;
int r;
}
class Circle {
Point c = new Point();
int r;
}
circle이 Point를 포함하고 있다.
상속관계
: '~은 ~이다'
포함관계
: '~은 ~을 가지고 있다.'
참조변수는 꼭 new ();로
단일상속 : 하나의 부모 클래스로부터의 단일 상속을 받는것을 일컫는다. 둘 이상의 부모 클래스로부터 상속을 받을 수 없다.
class TvDVD extends Tv, DVD {
//이럴경우에는 에러가 난다
// C++은 다중상속 허용
}
자바는 다중 상속이 아닌 단일상속만 허용한다.
그 이유는 이름이 같은 메서들르 호출 시에 충돌이 일어날 수 있기 때문이다.
(나중에 인터페이스에서 이러한 충돌문제를 해결할 수 있다고 한다 . 이 부분은 인터페이스 공부할때 정리해봐야지 )
그렇기 때문에 비중이 높은 클래스 하나만 상속관계로, 나머지는 포함관계로 한다
oject클래스
- 모든 클래스의 조상
부모가 없는 클래스는 자동적으로 object 클래스를 상속받게 된다.
object에 정의된 메서드는 총 11개가 있으며 equals(), hashCode(), toString() 등이 있다.
Object c = new Object();
System.out.println(c);
System.out.println(c.toString);
// 실행결과는 같다.
toString () 예시
오버라이딩 (Overriding)
상속받은 조상의 메서드를 자신에 맞게 변경하는 것
class point {
int x;
int y;
String getLocation()
return "x : " + x + ", y : " + y;
}
}
class Point3D extends Point {
int z;
//조상의 getLocation()을 오버라이딩
String getLocation() {
return "x : " + x + " , y : " + y + ", z : " + z;
}
}
오버라이딩의 조건
오버로딩과 오버라이딩
- 오버로딩: 기존에 없는 새로운 메서드를 정의하는 것 (new)
- 오버라이딩: 상속받은 메서드의 내용을 변경하는 것
class Parent {
void parentMethod() {}
}
class Child extends Parent {
void parentMethod() {} // 오버라이딩
void perentMethod(int i ) {} //오버로딩
void childMethod() {} // 메서드 정의
void childMethod(int i ) {} // 오버로딩
'백엔드 > Java' 카테고리의 다른 글
[Java] JOptionPane.showInputDialog() import 에러 뜰 때 해결 방법 (0) | 2022.09.28 |
---|---|
[Java] try catch 문 (0) | 2022.09.28 |
[Java] 예외 처리와 예외 클래스의 계층 구조 (0) | 2022.09.28 |
[Java] 객체지향언어의 특징 (0) | 2022.09.27 |