객체, 클래스

Fruit·2023년 3월 28일

✨ Hello C#!

목록 보기
22/34
post-thumbnail

🌸 객체

  • 데이터 (속성) + 메서드 (기능)

🌸 클래스

  • 데이터와 메서드를 지정한다.
  • 멤버: 필드, 메서드, 프로퍼티, 이벤트 등 클로스 내에 선언된 요소들
using System;

namespace BasicClass
{
    class Cat
    {
        public string Name;		// 필드
        public string Color;	// 필드

        public void Meow()		// 메서드
        {
            Console.WriteLine($"{Name} Meow");
        }
    }

    class MainApp
    {
        static void Main(string[] args)
        {
            Cat kitty = new Cat();		// kitty 객체 생성, Cat의 인스턴스
            kitty.Name = "kitty";
            kitty.Color = "white";
            
            kitty.Meow();
            Console.WriteLine($"{kitty.Name}: {kitty.Color}\n");

            Cat nero = new Cat();		// nero 객체 생성, Cat의 인스턴스
            nero.Name = "nero";
            nero.Color = "black";

            nero.Meow();
            Console.WriteLine($"{nero.Name}: {nero.Color}");
        }
    }
}

[실행 결과]
kitty Meow
kitty: white

nero Meow
nero: black



🌸 생성자

  • 클래스와 이름이 같고 반환 형식이 없다.
  • 오버로딩이 가능하다.
using System;

namespace Constructor
{
    class Cat
    {
        public Cat()	// 생성자
        {
            Name = "";
            Color = "";
        }

        public Cat(string _Name, string _Color)		// 생성자, 오버로딩
        {
            Name = _Name;
            Color = _Color;
        }

        public string Name;
        public string Color;

        public void Meow()
        {
            Console.WriteLine($"{Name} Meow");
        }
    }

    class MainApp
    {
        static void Main(string[] args)
        {
            Cat kitty = new Cat();		// Cat()
            kitty.Name = "kitty";
            kitty.Color = "white";
            
            kitty.Meow();
            Console.WriteLine($"{kitty.Name}: {kitty.Color}\n");

            Cat nabi = new Cat("nabi", "brown");		// Cat(string _Name, string _Color)

            nabi.Meow();
            Console.WriteLine($"{nabi.Name}: {nabi.Color}");
        }
    }
}

[실행 결과]
kitty Meow
kitty: white

nabi Meow
nabi: brown



🌸 종료자: ~

  • 오버로딩이 불가능하다.
  • 직접 호출할 수 없다. (CLR의 가비지 컬렉터가 판단해서 종료자를 호출)
  • 성능 저하를 초래할 확률이 높아 사용을 권장하지 않는다.
using System;

namespace Constructor
{
    class Cat
    {
        ~Cat()		// 종료자
        {
            Console.WriteLine($"{Name} bye");
        }

        public string Name;
        public string Color;

        public void Meow()
        {
            Console.WriteLine($"{Name} Meow");
        }
    }

    class MainApp
    {
        static void Main(string[] args)
        {
            Cat kitty = new Cat();
            kitty.Name = "kitty";
            kitty.Color = "white";
            
            kitty.Meow();
            Console.WriteLine($"{kitty.Name}: {kitty.Color}\n");
        }
    }
}

▪ 참고: Hello Fruit! - 중첩 클래스 등

▪ 사진 출처: Pixabay - ❄️♡💛♡❄️ Julita ❄️♡💛♡❄️

profile
🌼인생 참 🌻꽃🌻 같다🌼

0개의 댓글