세상은 객체들의 집합으로 이루어져 있으며 객체들간의 상호작용으로 동작한다.
class Student(){
public string name;
public int age;
public float height;
public float weight;
public float BMI(){
return weight*height*height/10000f;
}
}
staitc void Main(){
Student kim = new Student();
kim.name = "Kim";
kim.age = 12;
kim.height = 164.2;
kim.weight = 54.6
Console.Write("(0)의 BMI는 : " , kim.name);
Console.WriteLine(kim.BMI);
}
반환형이 없는 클래스이름의 함수를 생성자라 하며 클래스의 인스턴스를 만들 때 호출되는 역할
생성자를 포함하지 않아도 기본생성자(매개변수가 없는 생성자)는 자동으로 생성됨
기본생성자 외 생성자를 포함한 경우 기본생성자는 자동으로 생성되지 않음.
값형식(Value type)
참조형식(Reference type)
복사생성자 : 복사할 인스턴스의 매개변수를 가지는 생성자
얕은복사(Shallow copy) : 객체를 복사할 때 주소값만을 복사하여 같은 참조를 가리키게 함
깊은 복사(Deep copy) : 객체를 복사할 때 주소값의 원본을 복사하여 다른 참조를 가리키게 함
class Monster{
public RefType shallow;
public RefType deep;
public Monster(Monster other)
{
//얕은 복사
this.shallow = other.shallow;
//깊은 복사
this.deep = new RefType();
this.deep.value = other.deep.value;
}
}
박싱 : 값형식을 참조형식을 변환
언박싱 : 참조형식을 값형식으로 변환
값형식의 경우 원본을 전달하는 방법으로 박싱을 진행하여 objec 자료형을 사용