11강

성연주·2021년 9월 9일
0

Environment.NewLine;

: 이렇게 작성할 경우, 알아서 각 OS에 맞는 줄바꿈 형식을 제공함
* OS 환경에 따른 줄바꿈 방식이 다르기 때문
* window : '\r\n'
* linux : '\n'

예시

foreach (Cat c in cus.MyCats)
	CusPetInfo.Text += c.Name + ":" + c.MakeSound() + Environment.NewLine;

virtual (가상 메서드)

: 부모클래스의 함수에 표시. 자식 클래스에 재정의된 함수가 있다면 그 함수로 대체해 실행하는 표시

예시

public virtual string MakeSound(){ // 자식클래스에 MakeSound()가 재정의 되어있다면 그걸로 실행
	return "";
}

override

: 부모 클래스에서 함수를 virtual로 정의했다면, override를 사용해 자식 클래스에서 재정의 가능

public override string MakeSound(){
	return "야옹";
}

클래스 상속

!! public, protected로 정의된 변수, 함수들을 상속받을 수 있음

예시

public class Cat : Pet{ ... } // Cat이란 클래스가 Pet이란 클래스를 상속받았다는 의미 = public class Cat extends Pet

생성자 재사용1

  • 원래는 무조건 부모클래스의 매개변수가 빈 생성자가 호출됨(ex. Pet())
    -> 따라서, 명시적으로 부모 클래스에 있는 특정 매개변수를 갖는 생성자를 사용하고 싶은 경우, 하단과 같이 자식 클래스에 정의하면 됨

예시

public Cat(int petId, string name, string, color, string gender)
	: base(petId, name, color, gender){
}

생성자 재사용2 - 대입을 통한 생성자를 재사용이 가능해짐

예시

// Pet을 Cat, Dog이 상속 받은 경우
Cat cat = ...;
Dog dog = ...;

Pet p;

p = cat;
p.~~~
p = dog;
p.~~~

as/is 연산자

is

  • a is b : a가 b면? true/false 반환
  • a as b : a를 b처럼 사용 가능
    -> a에는 없는 b 고유의 함수도 사용 가능
foreach(Pet pet in cus.MyPets){
	if (pet is Cat) // pet이 Cat 객체라면?
    	CusPetInfo.Text += ":" + (pet as Cat).Scratch(); // Cat 클래스의 Scratch 함수 사용 가능
    else if (pet is Dog) // pet이 Dog 객체라면?
    	CusPetInfo.Text += ":" + (pet as Dog).Bite(); // Dog 클래스의 Bite 함수 사용 가능
}

0개의 댓글