This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
namespace Constructor | |
{ | |
class Cat | |
{ | |
// 클래스 내의 객체는 필드와 메서드로 구성 | |
// 클래스 내 변수들은 필드, 메서드는 기능 구현 | |
// 클래스 내 모든 요소들을 멤버라 함. | |
public Cat() | |
// 클래스 명과 같은 생성자 함수() | |
{ | |
Name = ""; | |
Color = ""; | |
} | |
public Cat(string _Name, string _Color) | |
// 생성자 달리 해서 오버로딩 가능. | |
{ | |
Name = _Name; | |
Color = _Color; | |
} | |
~Cat() | |
// ~클래스이름() 은 종료자. 단, 사용 할 필요가 없음. | |
{ | |
Console.WriteLine($"{Name} : 잘가"); | |
} | |
public string Name; | |
// *참고로 C#에서 접근한정자 수식 않으면 클래스 멤버는 무조건 private! | |
public string Color; | |
public void Meow(string Name) | |
{ | |
this.Name = Name; | |
// 객체 내부에서 자신의 필드나, 메서드 접근시 this. 키워드. | |
Console.WriteLine($"{Name} : 야옹"); | |
} | |
} | |
class MainApp | |
{ | |
static void Main(string[] args) | |
{ | |
Cat kitty = new Cat("키티", "하얀색"); | |
// 클래스 객체 생성시 new 클래스(); 에서 () 는 기본 생성자를 말함. | |
// 클래스 선언 시 명시적으로 생성자를 구현 않으면, 컴파일러에서 기본생성자 자동 생성. | |
// 단, 생성자를 하나라도 직접 정의하면 기본생성자 제공 안함. | |
kitty.Meow("하이"); | |
// 비정적 메서드(인스턴스 메서드) : 클래스 인스턴스 생성해야만 사용 할 수 있는. | |
Console.WriteLine($"{kitty.Name} : {kitty.Color}"); | |
Cat nero = new Cat("네로", "검은색"); | |
nero.Meow("헬로우"); | |
Console.WriteLine($"{nero.Name} : {nero.Color}"); | |
} | |
} | |
} | |
------------------------------------------------------------------------------------------- | |
using System; | |
class Global | |
{ | |
public static int Count = 0; | |
// 클래스의 객체(인스턴스)를 static 한정자로 키워드를 붙이면, | |
// 클래스 자체에 소속되게 하여, 객체를 생성않고 클래스 필드로 사용 가능. | |
} | |
class ClassA | |
{ | |
public ClassA() | |
{ | |
Global.Count++; | |
// 클래스 .의 필드로 직접 접근. | |
} | |
} | |
partial class ClassB | |
// partial 키워드는 하나의 클래스를 여러 클래스로 나눠서 구현 가능. 길어질 경우 소스코드 관리 편의 제공. | |
{ | |
public ClassB() | |
{ | |
Global.Count++; | |
} | |
} | |
partial class ClassB | |
{ | |
public ClassB(string minus) : this() | |
// 생성자도 중복을 피해 this()로서 객체 자신의 생성자를 호출해서 사용 할 수 있음(생성자에서만) | |
{ | |
// this() 생성자를 호출하므로 Global.Count++;도 함께 구현됨. | |
Global.Count--; | |
} | |
} | |
class MainApp | |
{ | |
static void Main() | |
{ | |
Console.WriteLine($"Global.Count : {Global.Count}"); | |
new ClassA(); | |
new ClassA(); | |
new ClassB(); | |
new ClassB("this() 생성자 역할"); | |
Console.WriteLine($"Global.Count : {Global.Count}"); | |
} | |
} | |
반응형
'Programming > C# - Window' 카테고리의 다른 글
C#/ 오버라이딩(overriding) (0) | 2023.06.28 |
---|---|
C#/ 클래스 상속 (0) | 2023.06.28 |
C#/ 오버로딩·매개변수 사용 (0) | 2023.06.28 |
C#/ 한정자 (0) | 2023.06.27 |
C#/ for 반복문 (0) | 2023.06.27 |