: 이렇게 작성할 경우, 알아서 각 OS에 맞는 줄바꿈 형식을 제공함
* OS 환경에 따른 줄바꿈 방식이 다르기 때문
* window : '\r\n'
* linux : '\n'
foreach (Cat c in cus.MyCats)
CusPetInfo.Text += c.Name + ":" + c.MakeSound() + Environment.NewLine;
: 부모클래스의 함수에 표시. 자식 클래스에 재정의된 함수가 있다면 그 함수로 대체해 실행하는 표시
public virtual string MakeSound(){ // 자식클래스에 MakeSound()가 재정의 되어있다면 그걸로 실행
return "";
}
: 부모 클래스에서 함수를 virtual로 정의했다면, override를 사용해 자식 클래스에서 재정의 가능
public override string MakeSound(){
return "야옹";
}
!! public, protected로 정의된 변수, 함수들을 상속받을 수 있음
public class Cat : Pet{ ... } // Cat이란 클래스가 Pet이란 클래스를 상속받았다는 의미 = public class Cat extends Pet
public Cat(int petId, string name, string, color, string gender)
: base(petId, name, color, gender){
}
// Pet을 Cat, Dog이 상속 받은 경우
Cat cat = ...;
Dog dog = ...;
Pet p;
p = cat;
p.~~~
p = dog;
p.~~~
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 함수 사용 가능
}