[C#] 생성자

2023. 10. 25. 17:05C#

728x90
반응형

클래스와 같은 이름의 특수한 메소드. 생성자는 반환 값이 없다.

필드 초기화 등에 이용한다.

 

 

  • 인수가 없는 생성자
class A
{
    public int a, b, c;
    
    public A() //생성자
    {
        a = 0;
        b = 0;
        c = 0;
    }
    ...
}

class TestA
{
    ...
    A a = new A(); //객체 생성 = 생성자 호출
    ...
}

 

 

  • 인수가 있는 생성자
class B
{
    public int s, t;
    
    public B(int a, int b) //생성자
    {
        s = a;
        t = b;
    }
}

class TestB
{
    ...
    B b = new B(3, 4); //생성자에 전달하는 인수
    ...
}

 

 

예시

using System;

class Book
{
    public int price;
    public int num = 0;
    public string title;

    public Book(string t, int p) //생성자
    {
        title = t;
        price = p;
    }

    public void print() //프린트 메소드
    {
        Console.WriteLine("제목" + title);
        Console.WriteLine("정가" + price);
        Console.WriteLine("주문부수" + num);
        Console.WriteLine("합계금액" + price*num);
    }
}

class Books
{
    static void Main()
    {
        Book book = new Book("C 그림책", 14000);
        book.num = 10;
        book.print();
    }
}

 

 


 

 

  • 복사 생성자
public Book(Book copy)
{
    num = copy.num
    price = copy.price
}

 

 

예시

using System;

class Book
{
    public string title;
    public string writer;

    public Book(string t, string w)
    {
        title = t;
        writer = w;
    }

    public Book(Book copy)
    {
        title = copy.title;
        writer = copy.writer;
    }

    public void print()
    {
        Console.WriteLine("제목: " + title);
        Console.WriteLine("저자: " + writer);
    }
}
class Books
{
    static void Main()
    {
        Book book1 = new Book("그림책", "철수");
        book1.print();
        Book book2 = new Book(book1);
        book2.title = "만화책";
        book2.print();
    }
}
728x90
반응형