티스토리 뷰

반응형

 

그간 필자는 객체지향이 정확히 무엇인지도 모르고

생성자, 오버로딩, 오버라이딩은 왜 배우는지도 모르고

주입식으로 학습했다.

 

객체지향 : 객체 단위로 프로그래밍 하는것, 코드의 중복 줄일 수 있음.

오버로딩 : 생성자 여러 개 생성하는 데 매개변수 다른 것

오버라이딩 : 상속받은 생성자 재정의 하는 것 등

 

이론식으로 공부했다.

 

그러다 다음의 예제를 만나고

모든 것이 한번에 이해가 되었다.

 

이전 필자의 포스팅에서 소개한 내용인데

필자의 시야가 확 트이는? 예제였기에

다시 한 번 포스팅 한다.

(이전 포스팅 참고)

 

바로 들어가보자.

 


다음의 코드를 보자.

(코드를 잘 짜는 것이 얼마나 코드를 단축시킬 수 있는지 알게 되는 코드이다.)

필자는 처음에 강의를 듣고 소름이 돋았다. 👍

 

class MyPoint3 extends Object {
    int x;
    int y;

    // Object 클래스의 toString()을 오버라이딩
    public String toString() {
        return "x : " + x + ", y : " + y;
    }
}

public class T2 {
    public static void main(String[] args) {

        MyPoint3 p2 = new MyPoint3();
        p2.x = 3;
        p2.y = 5;
        System.out.println("p2.x = " + p2.x);
        System.out.println("p2.y = " + p2.y);
    }
}

 

위 코드의 실행결과를 보자.

 

p2.x = 3
p2.y = 5

 

 

위의 코드를 간단하게 줄이면 다음과 같다.

 

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 T1 {
    public static void main(String[] args) {
        MyPoint3 p = new MyPoint3(3,5);
        System.out.println(p);
    }
}

 

보이는가? 엄청난 양의 코드가 줄었다.

만약 매개변수와 출력문이 훨씬 더 많았다고 생각해보라.

어마무시한 코드의 중복을 해결한 것이다!!

 

이제 출력결과가 일치하는지 확인해보자.

 

x : 3, y : 5

출력결과가 일치한다.

 

이 예제를 보고 필자는 객체 지향의 개념을 완벽하게 이해하고

감탄했다.

 

객체 지향의 개념을 완벽하게 깨우친 느낌이었다. 👍

 


이해가 되는가?

소름이 돋는가?

 

우리가 기존에 배웠던 생성자, 메서드 등을 필자는

왜 사용하는지 몰랐다.

그리고 객체지향 프로그래밍이 코드의 중복을 제거한다는 말도

이론으로 달달 외우기만 했지

실제로 느껴본 적이 없는데

다음의 예제를 보고 그간의 모든 의문이 풀렸다.

 

만약 위의 예제가 이해되지 않는다면

필자의 블로그 [자바] 카테고리의 [자바의 정석] 포스팅을 전체 회독하거나

유튜브에서 '자바의 정석' 강의 Ch 6,7을 반복 수강하기를 바란다.

(물론 다른 챕터도 같이 들으면 더욱 좋을 것이다.)

 

 

최근에 필자는 코딩 공부에 방향을 잃어

이리저리 해맸다.

(나중에 기회가 되면 이것에 대한 회고를 하겠다.)

 

결국 필자가 선택한 방법은

'남과 비교하지 말고 느리더라도

기초부터 다시 하자'였고,

 

그 처음으로 '자바의 정석'강의를 듣고 있다.

확실히 기초를 잡으니 공부가 재밌고

주입식으로 달달 외우는 것이 아닌

하나씩 차근차근 이해하는 느낌이다.

 

그럼 다들 열심히 공부하길 바란다 👍

반응형