12. 구조체 & 튜플
·
💻 Programming Language/C#
구조체(Struct) => 키워드 : struct 사용 using System; namespace StructEx { //구조체 정의하기 struct MyPoint { public int x; public int y; //**구조체는 매개변수가 없는 기본생성자는 선언할 수 없다. public MyPoint(int x, int y) { this.x = x; this.y = y; } // 모든 구조체는 System.Object 형식을 상속하는 System.ValueType으로 부터 직접 상속받음. public override string ToString() { return string.Format($"{x} {y}"); } } class Program { static void Main(string[] arg..
11. 오버라이딩(virtual, override, new)
·
💻 Programming Language/C#
namespace Override { class BaseClass { public virtual void echo() { Console.WriteLine("기반 클래스"); } public virtual void echo2() { Console.WriteLine("기반 echo2"); } } class DerivedClass : BaseClass { override public void echo() //부모클래스 내에 virtual로 선언되어 있는 메소드를 파생클래스에서 재정의할때 // override 키워드를 앞에 붙이고 메소드를 재정의해준다. // => 이렇게 사용하는게 정확한 방법이고 에러나 경고가 안뜸 { Console.WriteLine("파생 클래스"); } public new void echo..
10. is 연산자와 as 연산자
·
💻 Programming Language/C#
namespace AsisEx { class Human { public void showInfo() { Console.WriteLine("Human"); } } class Programmer : Human { public void programming() { Console.WriteLine("개발자"); } } class Designer : Human { public void design() { Console.WriteLine("디자이너"); } } class Program { static void Main(string[] args) { Human human = new Programmer(); //파생클래스 인스턴스를 기반클래스 인스턴스로 선언 Programmer programmer; if (human ..
09. 상속관계의 클래스 형변환
·
💻 Programming Language/C#
namespace ClassConversionEx { // 상속관계의 클래스 사이에서의 형변환 class Human { public void showInfo() { Console.WriteLine("Human"); } } class Programmer : Human { public void programming() { Console.WriteLine("프로그래밍 하는 개발자"); } } class Designer : Human { public void design() { Console.WriteLine("디자인하는 디자이너"); } } class Program { static void Main(string[] args) { Human human = new Human(); human.showInfo(); ..
08. base키워드와 sealed한정자
·
💻 Programming Language/C#
namespace inheritEx2 { // 기반(부모) 클래스의 매개변수가 있는 생성자에게 // 파생(자식) 클래스의 생성자에서 인자를 전달하는 방법 /* C# 에서는 부모 클래스 생성자 중에서 사용자 지정 생성자(매개변수가 있는 생성자)가 존재 할 때 부모 클래스 생성자의 매개변수 (Ex. 매개변수 = p) 를 자식클래스에서 전달하여 활용할 수 있다. 즉, 자식 클래스의 인스턴스(부모클래스를 상속받고 있는경우)를 생성할때 부모클래스에 매개변수를 전달하여 초기화 할 수 있음. cf) Java? Python인가? 거기서 봤던 super() 같은 것인듯함. */ /* sealed */ class Parent // 이와 같이 `sealed` 키워드를 이용하면 // 컴파일러에서 에러를 발생시켜 상속을 불가능..
07. 상속
·
💻 Programming Language/C#
namespace inheritEx { class Parent // 상속을 해주는 클래스를 부모, 슈퍼, 상위 클래스라고 일컫는다. // 기반(Base) 클래스라고도 부른다. { public Parent() { Console.WriteLine("Parent 생성자 호출"); } ~Parent() { Console.WriteLine("Parent 종료자 호출"); } public void showInfo() { Console.WriteLine("Parent Class"); } } class Child : Parent // 상속을 받는 클래스를 자식(파생)클래스라고 일컫는다. // 상속을 받을 때에는 : 키워드를 이용하여 상속받는다. // 상속받은 코드를 재활용해서 자신에게 맞는 코드로 수정하여 사용할 수 ..
06. 접근제한자(Access Modifier)
·
💻 Programming Language/C#
namespace AccessModifierEx { class Demo { // public 접근 제한자 public static void public_method() { } // private 접근 제한자 private static void private_method() { } // protected 접근 제한자 protected static void protected_method() { } // internal 접근 제한자 internal static void internal_method() { } // protected internal 접근 제한자 protected internal static void protected_internal_method() { } // private protected 접..