남궁성님의 자바의 정석 기초편을 보면서 혼자 공부하는 공간입니다. 참고 부탁드립니다.
단일 상속 (Single Inheritance)
- Java는 단일 상속만 허용한다 (C++은 다중상속 허용)
- 비중이 높은 클래스 하나만 상속관계로, 나머지는 포함관계로 한다.
Object 클래스
- 모든 클래스의 조상
- 부모가 없는 클래스는 자동적으로 Object 클래스를 상속받게 된다.
- 모든 클래스는 Object클래스에 정의된 11개 메서드를 상속받는다. (ex) toString(), equals(Object obj), hashCode(),... )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
class MyPoint3 extends Object{
int x;
int y;
MyPoint3(int x, int y){
this.x = x;
this.y = y;
}
// Object클래스의 toString()을 오버라이딩
public String toString() {
return "x:"+x +", y:" + y;
}
}
public class OverrideTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
MyPoint3 p = new MyPoint3(1,2); // 생성자는 초기화 하는게 번거롭기 때문에 MyPoint3 생성자를 추가해주면 1,2만 넣어주면 코드 간결해짐
System.out.println(p); // toString 오버라이딩 해서 p만 입력하면 출력 가능:)
// MyPoint3 p = new MyPoint3();
// p.x= 3; //생성자 초기화
// p.y =5;
// System.out.println("p.x= " +p.x );
// System.out.println("p.y= " +p.y );
//System.out.println(p.toString());
// System.out.println(p);
}
}
|
cs |
오버라이딩 (overriding)
- 상속받은 조상의 메서드를 자신에 맞게 변경시키는 것
오버라이딩의 조건
- 선언부가 조상클래스의 메서드와 일치해야 한다.
- 접근 제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.
- 예외는 조상 클래스의 메서드보다 많이 선언할 수 없다.
오버로딩 vs 오버라이딩
오버로딩 (overloading) : 기존에 없는 새로운 메서드를 정의하는 것 (new)
오버라이딩 (overriding) : 상속받은 메서드의 내용을 변경하는 것 (change, modify)
class Parent {
void parentMethod() {}
}
class Child extends Parent {
void parentMethod() {} // 오버라이딩
void parentMethod(int i){} // 오버로딩
void childMethod() {} // 메서드 정의
void childMethod(int i ){} // 오버로딩
void childMethod() {} // 중복정의
}
'프로그래밍 > JAVA' 카테고리의 다른 글
자바의 정석 기초 ( 패키지 / 패키지 선언 / 클래스 패스 / import문 / static import문 ) (0) | 2020.07.10 |
---|---|
자바의 정석 기초 ( 참조변수 super / 생성자 super() ) (0) | 2020.07.10 |
자바의 정석 기초 ( 상속 (Inheritance) / 포함 (composite) ) (0) | 2020.07.10 |
자바의 정석 기초 ( 생성자 this() / 참조변수 this / 변수의 초기화 / 초기화 순서 ) (0) | 2020.07.09 |
자바의 정석 기초 ( 오버로딩 ) (0) | 2020.07.09 |
댓글