C# Class1

10098 단어 CsharpCsharp

객체지향 프로그래밍

  • 코드 내의 모든 것을 객체로 표현하고자 하는 프로그래밍 패러다임
  • 추상적으로 객체의 속성, 기능을 설계
  • 속성 → 데이터, 기능 → 메소드

클래스

  • 클래스는 객체를 만들기 위한 틀
  • 클래스 → 붕어빵 틀, 객체 → 붕어빵1, 붕어빵2, ..., 각각 붕어빵 메모리공간 차지
  • string a, string b 에서도 string은 이미 정의된 문자열을 다루는 클래스
  • 이때 a, b를 실체(instance)라고 함
  • 클래스 또한 데이터 형식이며 데이터와 메소드를 묶는 복합 데이터 형식이라 함

클래스 선언과 객체의 생성


//----Program.cs----//
using System;
using static System.Console;

namespace ConsoleApp1202
{
    public class Program
    {
        static void Main(string[] args)
        {
            Cat kitty = new Cat();
            kitty.Name = "kitty";
            kitty.Color = "white";
            kitty.Meow();
            WriteLine(kitty.ToString()); // ToString 찍으면 클래스 소속나옴
            WriteLine(kitty.Name);
            
            Cat Nero = new Cat();
            Nero.Name = "Nero";
            Nero.Color = "Black";
            Nero.Meow();
        }
    }
}

//----Class1.cs----//
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1202  // 같은 namespace 사용
{
	class Cat
	{
		public string Name;
		public string Color;
        
		public void Meow()
		{
			Console.WriteLine("{0} : 야옹", Name);
		}
	}
}

클래스 생성자, 소멸자

  • 객체가 생성될 때는 생성자를 호출하고, 소멸할 때는 소멸자를 호출
  • 클래스 선언 시 명시적으로 생성하지 않아도 컴파일러가 생성자 만듬 (기본생성자)
  • 클래스 소멸 시 가비지콜렉터가 정리하니 소멸자 신경x

정적 필드와 메소드

  • static은 메소드나 필드가 인스턴스가 아니라 클래스 자체에 소속되도록 지정하는 한정자
  • static 붙으면 클래스 소속, 안붙으면 인스턴스 소속
  • 프로그램 전체에서 공유해야하는 변수가 있다면 정적 필드 사용
using System;

class Global
{
    public static int Count = 0; // static 안붙으면 Global.Count 에러
}

class ClassA
{
    public ClassA()
    {
        Global.Count++;
    }
}

class ClassB
{
    public ClassB()
    {
        Global.Count++;
    }
}

class MainApp
{
    static void Main()
    {
        Console.WriteLine($"Global.Count : {Global.Count}"); // count : 0
        
        new ClassA();
        new ClassA();
        new ClassB();
        new ClassB();

        Console.WriteLine($"Global.Count : {Global.Count}"); // count : 4
    }
}

좋은 웹페이지 즐겨찾기