생성자 7

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

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

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

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

#030_닷넷(.NET)_.Net Framework 기본 - 생성자 주의 사항

안녕하세요 삽잡이입니다. 이번 시간에는 생성자를 구현할 때에 주의해야할 점에 대해서 알아보고자합니다. 생성자는 클래스를 인스턴스화 할 때 한번 호출되는 메서드입니다.그리고 클래스는 필요한 곳이면 어디든지 가져다 쓰기 위해서 만든 정의 묶음이지요...즉, 객체지향 측면에서 바라볼 때이미 만들어놓은 클래스를 다른 곳에서 가져다 쓸 일이 비일비재하다는 것입니다. 따라서 가져다 쓸 사용자의 입장을 바라볼 때누구나 범용적으로 사용할 수 있도록 명확한 클래스를 정의해야합니다. 또한, 생성자에서는 분명 명확한 코드만을 포함시켜야합니다.생성자가 호출된다는 것은 물리적으로 메모리에 객체를 생성하고 생성자를 호출해서 그 메모리의 값들을 초기화하는 것입니다. 생성자를 이야기할 때에는 생성자를 호출해야 객체가 만들어지는 것이..

#027_닷넷(.NET)_.Net Framework 기본 - Getter/Setter (속성) & 생성자

안녕하세요 삽잡이입니다. 이번 시간에는 이전 시간에도 두어번 언급한 Setter/Getter에 대해서그리고 생성자에 대해서 알아보겠습니다. 모든 필드는 private 형식으로 만들어져있습니다.즉, 외붸서 마음대로 접근하지 못하게 하려는 의도입니다.많이 알면 많이 알 수록 서로 힘들지요...그래서 조금만 알자고 '캡슐화'전략을 쓰는 것입니다. 그런데 필드 값을 업데이트, 참조를 하기 위해서는 C#에서는 property 즉, 필드를 읽을 Getter/Setter를 사용합니다. Getter와 Setter는 인터페이스입니다.객체는 클래스가 됬건 객체가 됬건 두 가지 내용물로 이루어져있지요...늘 반복해서 말씀하지만 '속성'과 '메서드'입니다. 속성은 상태, 메서드는 기능을 나타내지요...속성과 메서드는 객체의 ..

#025_시(c)시(c)해서 C++?!_멤버 이니셜라이저

안녕하세요 삽잡이입니다... 이번 시간에는 기초로 다시 돌아가서 이니셜라이즈에 대해서 썰을 풀어보고자 합니다... 이니셜라이즈... 언제 쓸까요? 두가지로 나뉩니다...상수와 생성자에 관련되서 이니셜라이즈를 사용하게 되죠...예시를 들어보겠습니다.. 123456789101112131415161718 #include #include using namespace std; class Member{ int num; string name;}; void main(){ Member *sap = new Member();} cs 이와 같이 기본적인 Member class는 생성자가 없으면 기본적으로 default 생성자가 자동으로 생성되어 문제없이 컴파일이 가능합니다... 하지만, 1234567891011121314 c..

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

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

#005_시(c)시(c)해서 C++?!... 조금은 불편한 생성자...

자... 한번 생성자부터 소멸자까지 한번 쓸어담아봅시다!물론 예제를 통해서 말입니다 하하... 우선, header입니다. 1234567891011121314151617181920212223242526#pragma once#include using namespace std;class Stu{ int num; string name; int hp;public: // 기본 생성자 //Stu(); // 생성자 Stu(int num); Stu(int num, string name); // 복사 생성자 Stu(const Stu &stu); // 기본 소멸자 //~Stu(); void Study(); int GetHp(); int GetNum();};cs 헤더는 어떤 역할을 담당하느냐...이런 형식들이 있다... 이런..