개발자 성장일지

제 4강 클래스(Class) 본문

인프런/C# 프로그래밍 입문

제 4강 클래스(Class)

hdigimon 2023. 11. 7. 18:16

1. 클래스

  • 데이터와 메서드를 함께 묶어서 추상화된 데이터 유형을 정의하고 객체를 생성하는 템플릿

 코드

더보기
class Person
{
    // 속성(Property)
    public string Name;
    public string Birthdat;
    public string Gender;

    // 메소드(Method)
    public void Eat()
    {
        Console.WriteLine(Name + "이 아침을 먹습니다.");
    }

    public void Walk()
    {
        Console.WriteLine(Name + "이 걷습니다.");
    }

    public void Run()
    {
        Console.WriteLine(Name + "이 뜁니다.");
    }

    
}

class Mainclass
{
    public static void Main(string[] args)
    {
        Person p1;
        p1 = new Person();
        p1.Name = "서준";
        p1.Walk();
    }

}

2. 오버로딩(Overloading)

  • 같은 이름의 메서드를 매개변수의 개수나 타입을 다르게 하여 정의하는 것

코드

더보기
class Cat
{
    public string Name;
    public int Age;

    public Cat(string name)
    {
        Name = name;
        Console.WriteLine("고양이의 이름은 " + Name + " 입니다.");
    }

    public Cat(string name, int age) 
    { 
        Name=name;
        Age = age;

        Console.WriteLine("고양이의 이름과 나이는 " + Name +" "+ Age + " 입니다.");
    }

    ~Cat() {
        Console.WriteLine(Name + "이 사라집니다.");
    }
}

class Plus
{
    public int Num;
    public int A;
    public int B;

    public Plus(int num, int a, int  b)
    {
        Num = num;
        A = a;
        B = b;

        int r1 = num + a + b;

        Console.WriteLine("합은 " + r1 + "입니다.");
    }


}

class MainClass
{
    public static void Main(string[] args)
    {
        Cat Coco = new Cat("코코");
        Cat Moly = new Cat("몰리", 5);
        Plus result1 = new Plus(1, 2, 3);
        Plus result2 = new Plus(4, 3, 2);
    }
}

 

3. 상속

  • 기존의 클래스가 가지고 있는 필드와 메서드를 그대로 물려 받은 자식 클래스를 정의하는 것

 

 

코드

더보기

오버라이딩(Overriding)

class Robot
{
    public void Move()
    {
        Console.WriteLine("로봇이 움직입니다.");
    }
}

class CleanRobot : Robot
{
    public void Move()
    {
        Console.WriteLine("청소로봇이 움직입니다.");
    }
}

class RescueRobot : Robot
{
    public void Move()
    {
        Console.WriteLine("구조로봇이 움직입니다.");
    }
}

class MainClass
{
    public static void Main(string[] args)
    {
        CleanRobot cleanRobot = new CleanRobot();
        RescueRobot rr = new RescueRobot();
        cleanRobot.Move();
        rr.Move();
    }
}

4. 데이터 전달

  • 매개변수

  • 맴버변수

  • private, this 키워드
    • 외부에서 접근 가능여부

코드

더보기
class Cat
{
    private string name;
    public int Age;

    public Cat(string name)
    {
        this.name = name;
        Console.WriteLine("고양이의 이름은 " + name + "입니다.");
    }

    public void SetName(string name)
    {
        this.name = name;
    }

    public string GetName()
    {
        return this.name;
    }
}


class MainClass
{
    public static void Main(string[] args)
    {
        Cat coco = new Cat("코코");
        coco.SetName("몰리");
        Console.WriteLine("고양이의 이름은 " + coco.GetName() + "입니다.");
    }
}