C# Class1
객체지향 프로그래밍
- 코드 내의 모든 것을 객체로 표현하고자 하는 프로그래밍 패러다임
- 추상적으로 객체의 속성, 기능을 설계
- 속성 → 데이터, 기능 → 메소드
클래스
- 클래스는 객체를 만들기 위한 틀
- 클래스 → 붕어빵 틀, 객체 → 붕어빵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
}
}
Author And Source
이 문제에 관하여(C# Class1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sunshine0070/C-Class저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)