Class

우창민·2023년 10월 23일
0

C# Study

목록 보기
7/7

Class(클래스)

객체지향 언어?

세상은 객체들의 집합으로 이루어져 있으며 객체들간의 상호작용으로 동작한다.

  • 코드의 재사용성이 높고 : 새로운 코드 작성시에 기존 코드를 사용하여 구현이 편리
  • 유지보수가 쉬우며 : 코드간의 관계로 적은 노력으로 유지 보수가 가능
  • 높은 신뢰도를 보일 수 있다. : 제어자와 메서드를 이용하여 데이터의 값 보존을 보장하고 코드의 중복을 제거하여 코드의 불일치로 인한 오류의 가능성 줄임

클래스의 개념

  • 데이터와 관련 기능들을 캡슐화 할수 있는 참조 형식
  • 객체지향 프로그래밍에 객체를 만들기 위한 설계도
  • 클래스는 객체를 만들기 위한 설계도이며, 만들어진 객체는 인스턴스라 함
  • 참조 : 원본을 가리키고 있음 == 원본의 주소를 가지고 있음

클래스 구현

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);
}

cf)생성자

반환형이 없는 클래스이름의 함수를 생성자라 하며 클래스의 인스턴스를 만들 때 호출되는 역할
생성자를 포함하지 않아도 기본생성자(매개변수가 없는 생성자)는 자동으로 생성됨
기본생성자 외 생성자를 포함한 경우 기본생성자는 자동으로 생성되지 않음.

값형식&참조형식

값형식(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 자료형을 사용

정적

  • 프로그램의 시작과 함께 할당, 프로그램 종료시에 소멸하며, 프로그램이 동작하는 동안 항상 고정된 위치에 존재
  • 정적변수 : 프로그램 전역에서 접근 가능한 변수, 클래스의 이름을 통해 접근 가능
  • 정적함수 : 인스턴스 없이도 접근 가능한 함수, 클래스의 이름을 통해 접근 가능
  • 정적 클래스 :인스턴스 없이도 접근 가능한 함수, 클래스,정적변수와 정적함수만을 포함 가능.

Reference

https://bbinya.tistory.com/44

profile
더 편하게 더 간단하게

0개의 댓글