728x90
728x90
인터페이스 - 메소드, 이벤트, 인덱서, 프로퍼티, 필드 불가 - 구현부 없음(정의) - 인스턴스 생성 불가(참조 가능) - 다중 상속 시 인터페이스는 좋은 대안 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _089_Interface { interface IAA { //public int a; //에러(필드 불가) //private void IPrint() { } //에러(private) //public void IPrint(); //에러(public) int A { get; set; } //프로퍼티 가능 void IAAPri..
다형성 - virtual, override - 객체 지향의 핵심 - 함수의 오버라이딩(재정의) - 반복문으로 객체 관리 - virtual과 override 키워드 사용 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _083_override { class Super { protected int num; public virtual void Print() { Console.WriteLine("num : {0}", num); } } class AA : Super { public int a; public override void Prin..
클래스 상속(IS-A 관계) - 부모 클래스 : base, parent, 상위, super - 자식 클래스 : derived, child, 파생, sub - 클래스의 재사용 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _081_01_classInheritance { class Super { protected int a; //private 불가능, public 가능 public void Print() { Console.WriteLine("Super Print()"); } } class Sub : Super { int b; pub..
this 키워드 - 객체 자신을 참조하는 키워드 - 사용처 1) 함수의 파라미터 이름과 멤버 변수 이름이 동일 2) 클래스 내부에서 멤버변수를 접근 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _079_this { class AA { int a; //this가 가리키는 객체, private 속성 public AA(int a) { this.a = a; } public void Print() { int a = 100; this.a = 1000; Console.WriteLine("a : {0}", a); Console.WriteLi..
클래스 개념 - 클래스는 사용자가 직접 만든 틀 - 변수(필드)와 함수(메소드)를 하나의 단위로 결합 - 상속, 다형성, 파생 클래스 등 클래스의 특수화 메커니즘을 가짐 접근 한정자 - 클래스의 멤버에 액세스(접근)할 수 있는 수준 public 액세스가 제한되지 않음 protected 이 클래스 또는 이 클래스에서 파생된 클래스로만 액세스가 제한됨 internal 현재 어셈블리(.exe, .dll 등)로만 액세스가 제한됨 protected internal 포함하는 클래스, 포함하는 클래스에서 파생된 클래스 또는 동일한 어셈블리 내의 클래스로만 액세스가 제한됨 private 이 클래스로만 액세스가 제한됨 private protected 포함하는 클래스 또는 동일한 어셈블리 내의 포함하는 유형으로부터 파생된..
메서드 오버로딩 - 메서드 이름이 중복 - 파라미터의 형식 다르게 - 파라미터의 수 다르게 static int Add(int a, int b) static int Add(int a, int b, int c) static int Add(float a, float b) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _065_Func_Overloading { class Program { static int Add(int a, int b) { return a + b; } static int Add(int a, int b, int c) ..