본문 바로가기
프로그래밍/JAVA

자바의 정석 기초 ( 단일상속 / Object 클래스 / 오버라이딩 / 오버로딩 )

by ✲ 2020. 7. 10.
반응형

남궁성님의 자바의 정석 기초편을 보면서 혼자 공부하는 공간입니다. 참고 부탁드립니다. 

단일 상속 (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:"++", 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() {}          // 중복정의 

}

반응형

댓글