SSISO Community

갤러리정

기본생성자 - CSharp

기본생성자(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 생성자
- 클래스 객체를 생성금지
- 정적 메소드만 제공하는 클래스 생성시


848 view

4.0 stars