기본생성자(Default Constructor)
- 접근제한자는 public
- 클래스와 동일한 이름의 메소드명
- 반환값, 인자값이 없다.
- 숫자형(0), 불린형(false), 참조형( null)로 초기화
- 생성자 오버로딩 가능
- new를 이용한 객체 생성시 호출된다.
기본 생성자 재정의(오버라이딩)
public class Test
{
private int i;
private int j;
private bool flag;
// private int i=100;
// private int j=200;
// private bool flag=false;
// 초기값을 부여하는 것 이외의 추가적인 작업은 할수없다.
public Test()
{
//기본생성자, 클래스이름과 같다.
//직접적으로 명시하지 않으면 기본값으로 초기화됨
//일반적으로 변수초기화시키는 작업은 기본생성자에서 하는것이 관례다. 편리성.
//기본생성자 재정의
Console.WriteLine("객체를 생성합니다.");
this.i = 100;
this.j = 200*i;
if(j>200)
this.flag = true;
else
this.flag = false;
//기본생성자에서 초기값을 부여할때의 장점
// - 초기값부여이외의 여러가지 추가적인 작업들까지도 함께 처리할수 있다.
}
public void Print()
{
Console.WriteLine("I : {0}, J:{1}, Flag : {2}", i,j,flag);
}
}
class MainClass
{
[STAThread]
static void Main(string[] args)
{
Test t = new Test();
t.Print();
}
}
생성자 오버로딩
public class Screen
{
private int width;
private int height;
public Screen() //기본생성자
{
Console.WriteLine("객체가 생성되었습니다.");
this.width = 1024;
this.height= 768;
}
//기본생성자는 없고 생성자 오버로딩만 작성한 경우 에러
//생성자가 하나이상 오버로딩 된경우 기본생성자는 아래처럼 꼭 명시해야함.
//public Screen(){}
//만약 기본생상자는 위처럼 내용이 비어있으나
//기본 오버로딩한 생성자와 실행이 중복된 행동을 하여 초기화를 시키고자 한다면.
//아래처럼 오버로딩한 생성자를 이용하여 초기화할수 있다.;
//public Screen():this(1024,768){}
public Screen(int width, int height) //생성자 오버로딩
{
this.width = width;
this.height = height;
}
public void Print()
{
Console.WriteLine("Widht : {0}, Height : {1}", this.width, this.height);
}
}
public class MainClass
{
public static void Main()
{
Screen s1 = new Screen();
Screen s2 = new Screen(640,480);
s1.Print();
s2.Print();
}
}
private 생성자
- 클래스 객체를 생성금지
- 정적 메소드만 제공하는 클래스 생성시
[출처] [펌] [20040506] 기본생성자|작성자 눈꽃천사