목록전체 글 (151)
성장일기
º모든 연산자를 오버로딩할 수 있는것은 아니다 ○클래스 간의 형변환 환율 고려안한 금전계산 오류 생길 수 있다 ºimplicit(암시적, 명시적 형변환 둘 다 허용) explicit은 명시적만 implicit operate를 오버로드했으므로 함시적 형변환을 할 수 있고 명시적으로 캐스팅연산자를 쓰는 것도 허용 ºexplicit ○C#의 클래스 확장 1.타입유형 확장 1.1 중첩클래스 public을 붙여야 외부에서 사용할 수 있다 internal-같은 파일 내부에 위치 1.2 추상클래스 ->abstarct 예약어가 지정되고 구현 코드가 없는 메서드 부모클래스의 인스턴스를 생성하지 못하게 하면서 특정 메서드에 대해 자식들이 반드시 재정의하도록 하고싶을 떄 º특징 new를 사용해 인스턴스로 만들 수 없다 추상..
○오버로드-메서드 오버로드/연산자 오버로드 º메서드 시그니처 주체가 무엇인지를 판단, 메서드를 고유하게 규정할 수 있는 정보 º'재정의'라는 단어로 번역될 수 있다 오버라이드- 시그니처가 완전히 동일한 메서드를 재정의할때 사용 오버로드-시그니처 중에서 반환값은 무시하고 이름만 같은 메서드가 '매개변수의 수','개별 매개변수 타입'만 다르게 재정의 되는 경우 º메서드 오버로드 Console.WriteLine도 다양한 값을 받을 수 있게 정의된 메서드오버로드의 예 º연산자 오버로드(operator overload) int operator + (int N1,int N2) { return N1+N2; } using System; using System.Collections.Generic; using System..
○오버로딩과 오버라이딩 오버로딩 - void teest() void test(int A) 이름은 같고 인자로 다름을 구분 오버라이딩 - void test(int A) void test(int A) 부모와 자식클래스 둘다 동일하게 º메서드=메소드=함수=프로시저 등 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _20200602_006 { class Mammal { public virtual void Move() { Console.WriteLine("이동한다"); } } class Lion : Mammal { public overr..
○object º부모클래스를 명시하지 않는다면 기본적으로 object타입에서 상속받는다고 가정하고 자동코드생성 º모든 클래스는 기본적으로 object를 상속받는다 ºobject 타입은 모든 타입을 포함하고있다 ºToString-문자열로 반환 5+'0'을 하면 53이 나온다-> 아스키코드 0은 48이기 때문, 따라서 이것을 문자형으로 바꿔주면 5가 나온다 ºGetType ºEquals 값을 비교해 불린형으로 반환한다 string 클래스는 object안에 있는 equals를 쓰지않음(오버라이딩) ->객체 자체를 비교하지 않고 텍스트비교 ºGetHashCode 1:1대응하는것을 hash라고부름 객체의 고유번호를 알아낼때 사용 고유번호를 비교해서 같으면 같은객체, 다르면 다른객체로 인식 hash는 2^32를 넘..
○생성자 객체 생성하려는 시도를 할 떄, 스태틱생성자가 가장 먼저 호출됨 Main안에서 아무도 스태틱생성자를 호출하지 않았지만 Person을 생성하려하니 스태틱생성자가 먼저 호출 ->이때 heap에 Person객체에 디폴트생성자 호출(person1에 대입은 안한 상태) 스태틱이 더이상 뜨지 않음 => 디버깅모드를 쓰면 프로세스 이해가 쉬움 ○정보은닉 정보은닉은 캡슐화가 잘 되면 함께 지켜진다 즉 정보은닉은 캡슐화의 수단이다. get과 set을 씀 public void SetSpeed를 if문으로 제약을 건다 ○프로퍼티 ○상속 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Th..
○종료자-디폴트 생성자에 ~(틸드) 붙임 CLR에서는 메모리 문제를 해결하기 위해 내부적으로 가비지 수집기(Garbage Collector:GC)를 도입 객체가 더는 사용되고 있지 않다면 데이터 해제 불확실한 시점에 메모리 정리 닷넷이 관리하지 않는 시스템자원을 얻은 경우에만 종료자를 정의해야함(성능 면에 부하) 메서드의 특별한유형 ○정적멤버,인스턴스멤버 static정적dynamic동적 객체는 런타임시점에 만들어짐->new를 통해 만들어진 객체는 메모리에만 존재=실행 됐을때만 존재 static을 쓰면 컴파일 시점에 만들어짐->파일 내에 존재= 항상 존재 static메소드 안에는 static만 쓸 수 있음 ○정적생산자 ○네임스페이스 ○접근 제한자(지정자)