성장일기
06/02 스마트팩토리 교육 - Object,Array,this,base 본문
○object
º부모클래스를 명시하지 않는다면 기본적으로 object타입에서 상속받는다고 가정하고 자동코드생성
º모든 클래스는 기본적으로 object를 상속받는다
ºobject 타입은 모든 타입을 포함하고있다
<object의 대표적 4가지 메서드>
ºToString-문자열로 반환
5+'0'을 하면 53이 나온다-> 아스키코드 0은 48이기 때문, 따라서 이것을 문자형으로 바꿔주면 5가 나온다
ºGetType
ºEquals
값을 비교해 불린형으로 반환한다
string 클래스는 object안에 있는 equals를 쓰지않음(오버라이딩)
->객체 자체를 비교하지 않고 텍스트비교
ºGetHashCode
1:1대응하는것을 hash라고부름
객체의 고유번호를 알아낼때 사용
고유번호를 비교해서 같으면 같은객체, 다르면 다른객체로 인식
hash는 2^32를 넘으면 안된다.
하지만 long형의 경우 2^64이므로 어떤경우에는 동일한 해시코드가 반환될 수 있다
->해시충돌
해시코드가 동일할때는 equals를 통해 확인할 수 있다
○Array
○this
현재 생성된 객체에서의 '나'
외부에있는 메서드에 접근할 때 this를 사용
메서드의 매개변수와 클래스에 정의된 필드의 이름이 같을 경우 this를 명시
<소스>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _20200602_004
{
class Car
{
int iSpeed; // 속도
string sColor; // 색상
string sName; // 이름
string sVender; // 제조사
public void Print()
{
Console.WriteLine("속 도 : {0}", iSpeed);
Console.WriteLine("색 상 : {0}", sColor);
Console.WriteLine("이 름 : {0}", sName);
Console.WriteLine("제조사 : {0}", sVender);
}
public Car() : this(0, "화이트", "미정", "미정")
{
}
public Car(int iSpeed) : this(iSpeed, "화이트", "미정", "미정")
{
}
public Car(string sColor) : this(0, sColor, "미정", "미정")
{
}
public Car(string sColor, string sName) : this(0, sColor, sName, "미정")
{
}
public Car(string sColor, string sName, string sVender) : this(0, sColor, sName, sVender)
{
}
public Car(int iSpeed, string sColor, string sName, string sVender)
{
this.iSpeed = iSpeed;
this.sColor = sColor;
this.sName = sName;
this.sVender = sVender;
}
}
class Program
{
static void Main(string[] args)
{
Car aCar = new Car();
aCar.Print();
aCar = new Car(80);
aCar.Print();
aCar = new Car("빨캉");
aCar.Print();
aCar = new Car("빨캉", "그랑죠");
aCar.Print();
aCar = new Car("빨캉", "그냥죠", "현다이");
aCar.Print();
aCar = new Car(100, "빨캉", "그냥죠", "현다이");
aCar.Print();
}
}
}
this로짧게 쓸 수 있음
this는 객체가 생성되어야 사용가능
static 멤버는 객체없이도 쓸 수 있기 때문에 static멤버에 this를 쓰면 오류가 남
○base
this가 클래스 인스턴스자체를 가리키는 것과 달리 base는 '부모클래스'를 명시적으로 가리킨다
○다형성
객체지향의 4대 특징은 추상화, 캡슐슐화, 상속, 다형성
º메서드 오버로드와 오버라이드
오버라이드=덮어쓴다, 덮지정
부모클래스에 있는 인자를 공유하지만 새로이 만든다
'프로그래밍언어 > C#' 카테고리의 다른 글
06/03 스마트팩토리 교육 - 오버로드 (0) | 2020.06.03 |
---|---|
06/03 스마트팩토리 교육-오버라이딩 (0) | 2020.06.03 |
06/01 스마트팩토리 교육 -생성자, 정보은닉, 프로퍼티,상속,is as 연산자 (0) | 2020.06.01 |
05/29 스마트팩토리 교육- 종료자, 정적멤버, 인스턴스 멤버, 정적 생성자 (0) | 2020.05.29 |
05/28 스마트팩토리 교육- (0) | 2020.05.28 |