상속 10

[삽잡이::일기] 상속, 생성자 그리고 디버깅 삽질기...

최근에 junit을 접할 일이 생겼다.java를 오랜만에 접하는지 두근두근 했다... 오우~ 난 하나도 몰라~ 모르겠어~ 기억이 안나~ 코드를 분석하고 이해할 일이 있었는데...진짜 희안한 코드를 다봤다...희안한게 아니라 사실 낯설었지... 공부좀 할껄~ java와 객체지향에 대한 모든 기억이 reset되고 외계어를 본 느낌이었다. 으아아아~ 뭔놈의 생성자에 인자가 하나 떡하니 있길래이게 뭔지 한~참을 생각했다. 그냥 엄청 대충 기초적인 코드로 예시를 들자면... 123456public class sap { public sap(string name) { super(name); }}cs 결국, 상속구조를 계속 타고 올라가보니 제일 부모되는 녀석의 생성자 녀석이기본 생성자가 없던 것이었다. 그래... 필수..

[삽잡이::java] 자식이 생성될 때 부모의 생성자를 부른다.

참으로 훈훈한 부자지간(?)이군요!아버지가 자식에게 상속을 하는 모습입니다. 재산을 상속 받다.되물림받다. 세습하다. 계승하다. 등등등... 옛 것(?)으로 부터 이어서 받아오는 그 무언가! 자... 여러분은 어떻게 태어나셨습니까?!부모님에 의해 태어났죠? 이와 같은 아름다운 일들이프로그래밍 세계에서도 존재합니다. 부모되는 클래스로부터자식 된 클래스가 만들어질 수 있다 이겁니다. 우리가 부모님께 용돈 받아 쓰고,부모님의 집에 얹혀 살듯이 ...(부모님께 효도하세요) 자식된 클래스는 부모 클래스의 것들을 가져다 사용할 수 있습니다. 그런데, 이 자식된 클래스가 객체로 태어나게 될 때 반드시 부모를 호출하게 됩니다. 엄밀히 말하자면,자식 클래스가 생성될 때 부모 클래스의 생성자를 호출하게 되는 것입니다. (..

#041_닷넷(.NET)_.Net Framework 기본 - 인터페이스 Intro

안녕하세요 삽잡이입니다. 이번 시간에는 인터페이스에 대해서 알아보려고 합니다.이~전 시간에 인터페이스에 대해서 알아본 감이 있지만,다시 한번 정리하는 겸 보다 꼼꼼하게(?) 알아보도록 하지요... /*글을 쓰다보니... interface는 못나갔습니다... 혹여나 이 글이 관심 없으신 분들은...다음 글에서 interface를 다루겠으니... 그 글을 참고하시길 바랍니다...*/ 객체지향의 중심축을 생각해봅시다.하나의 단위를 만들어내는 묶음의 기능과 보호의 기능(은닉)을 담당하는'캡슐화'는 알고자하는 것은 알고 감추고자하는 것은 감추기 위한 객체지향의 핵심입니다. 캡슐화는 클라이언트에게 '최소한의 것'만을 알려줄 수 있도록 합니다.많이 알면 알수록 신경써야할 일들이 많고, 복잡해지는 일도 비일비재하니 이..

[삽잡이] 객체지향 - 상속

안녕하세요 삽잡이입니다. 이번 시간에는 상속과 다형성에 대해서 알아보겠습니다. 상속에서는 '코드 재사용'이 가장 기본적인 개념입니다. Object형 하나가 있다고 해봅시다.이 Object를 상속받아서 Car 클래스가 만들어진다고 해보겠습니다.그렇다면 Object에서 만들어졌던 기능을 Car에서 구현할 필요가 없지 않습니까...따라서, Car가 Object 코드를 '재사용'했다고 볼 수 있습니다. 또한 Object를 상속받아서 만들어진 Radio가 있다고 해보겠습니다.이 녀석도 상속을 받고 기능을 재사용할 수 있습니다. 그런데 Car의 클래스에서 Radio 클래스를 사용한다면 어떨까요?Car는 Radio의 기능을 구현하지 않고 기능을 가져다 쓴 것입니다. 이 또한 재사용입니다.하지만, 포함관계이지요... ..

#019_닷넷(.NET)_.Net Framework 기본 - 참조 타입 과 값 타입의 의미

지난 시간에 이어서 타입에 대해서...즉, '참조 타입이냐, 값 타입이냐'에 대해서 알아보도록 하겠습니다. 지난 시간을 다시 곱씹어봅시다.인터페이스를 제외한 나머지를 모두 하나의 타입이라고 생각하면 됩니다.그런데 여기서 두 가지의 분류로 나눌 수가 있지요.하나는 '값처럼 동작하는' 것,다른 하나는 '값 처럼 동작하지 않는' 그 외... 즉, '참조로 동작하는' 것으로 나눌 수 있습니다. Java는 내장 타입(int, float, double)과 같은 타입은 값 타입이 아닌 참조 타입입니다.그래서 다른 타입들과 놀려면 변환 및 매핑을 해줘야되서 불편합니다.C#은 Java를 등에 엎고(?) 나온 언어로써,이러한 불편함을 느끼고 프로그램하기 보다 쉽게 만들어놓기 위해서 분류하여 나온 것입니다.아무튼... 값 ..

#004_닷넷(.NET)_.Net Framework 기본 - 인터페이스

안녕하세요 삽잡이입니다. 이전 시간에 CTS에 대해서 알아보며 Type에 대해서 언급한적이 있습니다.이번 시간에는 CTS의 다섯개의 타입 중 왕따인... 인터페이스에 대해서 알아보고자 합니다. 인터페이스는 독립적입니다. 객체 지향에서 매우 중요하지요...interface는 명사로 '중개자', 동사로 '중개하다, 소통하다'의 뜻을 가지고 있습니다.왜 명사, 동사를 나눠서 말씀을 드렸을까요...이유는 그 자체를 뜻하기도, 동작을 뜻하기도 하기 때문입니다. 그렇다면 객체지향에서 말하는 객체지향이란 뭘까요? 예를 들어서... 학생이라는 클래스가 있다고 해봅시다.이 학생이라는 클래스에는 공대생, 미대생, 인문계생 등이 있다고 해보겠습니다.이 모든 학생들은 기본적으로 공부를 합니다...그런데 말입니다... 각 학생..

#020_시(c)시(c)해서 C++?!_ 되돌아보자 씨쁠쁠 ...

안녕하십니까~ 삽잡이입니다... 막장... 삽잡이 푸하하...내가 이해한 바탕으로 쉽고 재미있게 블로그에 풀어쓰자는 취지는이미 안드로메다로 떠났습니다...아닙니다... 회생할 수... 있을까요... 있겠지요... 흐헉헉 아무튼... 지금까지 제가 C++ 에 대한 글을 올리며 어느정도 C++에 대한 문법적인 요소들은 한번씩 밟아온것 같아서... (밟아...?)다시한번 곱씹어보는 시간을 가져보려 합니다... 참고로 이번 글은... 뭐 이전글들도 다 해당되지만...C++에 대해서 아에 기초가 없으신 분들은 뭔 외계어인가 하며 분노게이지가 차오르실 것입니다 ㅠㅠ... 아무튼... 시작해보도록 하겠습니다... 캡슐화에 대해서부터 썰을 풀도록 해보죠...캡슐화는 우선 멤버 변수와 멤버 메소드가 한 class에 있는..

#008_시(c)시(c)해서 C++?!_이름은 같은데 하는짓은 다 달라... 다형성

안녕하세요 삽잡이입니다. 오늘은 다형성에 대해서 배워보도록 하겠습니다...겉으로는 보이는 건 하나지만, 구체적으로는 모두 다를 수 있다...이게 바로 다형성입니다... 파생을 통해서 얻을 수 있는 이점중 하나는 바로기반 클래스 형식의 포인터 변수로 파생된 개체를 관리할 수 있다는 것입니다...말이 좀 어렵죠?이말인 즉, 기반 클래스에 직접적으로나 간접적으로나 상속 되는 클래스는 모두 관리할 수 있다 이겁니다...더 어렵나요? 허허... 이전 시간에 예시를 들었던....피아니스트, 드러머, 기타리스트 등 음악가와 관련된 개체들을음악가 형식의 포인터 변수로 관리 할 수 있다 이거죠... 좀더 생각해본다면, 음악가 형식의 변수 즉, 기반 클래스 형식의 포인터 변수 하나로 여러개의 파생 클래스 형식의 객체들을 ..

#007_시(c)시(c)해서 C++?!_상속을 가지고 놀아보자~

안녕하세요 삽잡이입니다. 지난 시간에는 클래스간의 관계에 대하여 알아봤었습니다.오늘은 그중에서 일반화 관계 즉, 상속과 다형성에 대해서 알아보려고 합니다. 일반화...란 뭐라고 했었나요? 'is a' 관계라고 했죠...예를 들어볼까요?'삽잡이는 사람이다.' '삽잡이는 남자다.' 등등... 삽잡이는 사람에 기반하고 있으며, 삽잡이는 남자에 기반하고 있습니다.또한, 남자는 사람에 기반하고 있죠...흠... 모두 사람에 기반하고 있네요... 그렇다는 뜻은, 사람이라는 기반 클래스를 통해서 남자, 삽잡이와 같은 파생 클래스를 통해 파생을 표현할 수 있다 이겁니다... 어렵게 설명했나요? 그러면 실제 코드를 보시며 이해를 해보도록 하겠습니다. 1234567891011class Musician{ string nam..

[Surro] :: Java 기초(2)

접근 제어자 public : 누구나 접근 가능하다 protected : 같은 패키지 내에 있거나 상속받은 경우에만 접근 가능하다. package-private : 아무런 접근 제어자를 적어주지 않을 때이며, package-private라고도 불린다. 같은 패키지 내에 있을 때만 접근 가능하다. private : 해당 클래스 내에서만 접근 가능하다. 자바에서 만든 코드를 관리하는 클래스 파일(.class)이 되는 타입의 종류 - 인터페이스와 abstract 클래스, 클래스의 차이 인터페이스 : 어떤 메소드가 존재해야 하는지에 대한 선언만 되어 있다. : 절대로 구현되어 있지 메소드가 있어서는 안 된다. : 인터페이스를 구현하는 클래스에서는 implements를 사용하여 선언한다. public interfa..