오늘 3주차 마저 했는데
클래스에 벽느꼇습니다...............................
일단 정의 하자면
클래스 > 설계도 역할이라고 보면 되고
각각 역할에 따라
캡슐 - 기능을 하나의 단위로 묶는것
상속 - 클래스를 확장하여 새롭게 만드는것
ex)사람(상위 클래스)이라는 클래스에 직장 학생 (하위 클래스)이 있다
다형성 - 다양한 동작을 할 수 있는것
추상화 - 단순화 하여 필요한 기능에 집중하는거 개념을 구현하는 것 세부구현은 뒤로 미룸
객체 - 데이터와 메서드를 가지며 상호작요을 통해 프로그램 이 동작함
이렇게 있고
클래스의 구성요소로는
필드 - 변수
메서드 - 함수
생성자 - 자동으로 호출되는 매서드
소멸자 - 해제되거나 소멸될때 나오는 매서드
근데 생성자과 소멸자도 메서드이기 떄문에
사실상 필드와 메서드로 이뤄져있다....라는데 사실 뜻만 봐서는 이해를 잘 못하겠습니다...일단 해봐야죠
Person 이라는 클래스를 만들고
이름과 나이는 정의한 다음
콘솔에 맞는걸 출력하는 것
static void Main(string[] asgs)로 정의하는데
여기서 Person p = new Person();이라고 되어있는데
person p 에 new Person을 연결해놨다는 뜻
(이때 이걸 래퍼런스 타입이라 한다)
person p 새로 공간이 생긴게 아니라 주소를 저장할수있는 p가 생긴것이고
new Person은 실제로 있는 공간 같은 개념
이제 name에 john을 넣고
age에 30을 넣으면
각각 출력이 된다
이미 부모클래스한테
public string Name { get; set; }
public int Age { get; set; }
public void Eat()
{
Console.WriteLine("Animal is eating.");
}
public void Sleep()
{
Console.WriteLine("Animal is sleeping.");
}
}
를 받았다
public class Dog : Animal 와 public class Cat : Animal에 아무런 내용없이 출력하게 되면
Animal is eating 이랑 Animal is sleeping 만 나오게 되지만
Dog에는 Dog is bark을 넣어주고
Cat에게는 Cat is meow 과 Cat sleep을 넣어줬다
그러면 출력시 Dog는
Animal is eating
Animal is sleeping
Dog is bark
이 출력되고
Cat은
Animal is eating
Animal is sleeping
Cat is meow가 출력되어야 하지만
따로 Cat Sleep을 출력시키라고 넣어주었기 때문에
Animal is eating
Cat Sleep
Cat is meow가 출력된다
구조체로 인해 cat에 있는 sleep이 더 가까워 뜨는거라고 하는데...사실 진짜 모르겠다
이해하려고 몇번 돌려봤지만 아 이게 머가 먼지 이해할듯 말듯ㅎ ㅏ면서 어렵내
닿을 듯 말듯하는 이 짜증나는 기분...... 내일 좀 더 해봐야겠다