C#/C# Basic

C# Class : 클래스 02

HicKee 2022. 12. 16. 23:27
 

C# Class : 클래스 01

클래스 (객체) 생성 -- Student 클래스 생성 -- new Student(); 에서 인스턴스가 생성된다 Student(타입) st(변수)= new Student(); new를 사용하면 객체 덩어리(인스턴스)가 만들어짐 -- heap(힙)에 할당됨 인스턴스

hickee.tistory.com

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;

namespace Class_01 {
    //학생 클래스 정의
    internal class Student {
        //추상화 객체의 속성을 빠르게 파악

        //public을 써야지 어디서나 접근을 할수 있다
        //캡슐화 변수(정보)를 은닉 - 기본적으로 변수를 외부에 노출시키면 안된다
        //명시적으로 private을 붙여준다
        //인스턴스 변수 혹은 속성이라고 함
        private int id;
        private string name;
        private int age;
        private string addr;
        //상수 변수는 대문자
        //static 인스턴스 생성 메모리와는 별도의 메모리에 할당됨

        //클래스 변수 (메소드에 static이 붙으면 클래스 메소드)
        public static string SCHOOL = "서울학교";  //객체가 생성할때마다 만들어지지 않는 다(처음,최초 객체를 만들때 한번만 생성됨)
        //이후 생성된 객체는 처음 만들어진 클래스 변수를 공유 한다

        //생성자를 정의 하지 않으면 Student() 생성자로 접근이 가능하지만 생성한다면 생성한 생성자로만 접근할수 있다
        //Student(int id,string name,int age,string addr) 만 만들어 놓으면  Student() 으로는 생성, 접근을 할수 없다

        //사용자 정의 기본 생성자 생성
        public Student() {
            //객체를 생성할때 가장 빠르게 실행 (객체 생성 시점) 즉 초기화를 할수 있다
            //새로운 객체를 생성할때도 사용 가능 하다
            id= 0001;
            name = "전우치";
            age= 20;
            addr = "강원도";
        }
        //매개변수가 있는 생성자
        public Student(int id,string name,int age,string addr) {
            this.id= id;
            this.name= name;    
            this.age= age;
            this.addr= addr;

        }


        //setter 기본적인 형태
        //this : 인스턴스가 만들어질때 자기 자신의 주소값

        public void setId(int id) {
            //this : 인스턴스가 만들어질때 자기 자신의 주소값
            //public void setId(int id)에서 int id 매개변수는 class Student안에 존재하는 private int id를 가리킨다
            this.id = id;
            //this.id --> private int id;
            //id --> 매개변수 int id 를 가리킴
        }
        public void setName(string name) {
            
            this.name = name;
        }
        public void setAge(int age) {
            
            this.age = age;
        }
        public void setAddr(string addr) {
            
            this.addr = addr;
        }

        //getter
        public int getId() { 
            return this.id;
        }
        public string getName() {
            return name;
        }
        public int getAge() {
            return age;
        }
        public string getAddr() {
            return addr;
        }

        //인스턴스 안에 메소드 -> 인스턴스 메소드
        public void showInfo() {
            Console.WriteLine("SCHOOL" + SCHOOL);
            Console.WriteLine("ID : " + id);
            Console.WriteLine("NAME : " + name);
            Console.WriteLine("AGE : " + age);
            Console.WriteLine("ADDRESS : " + addr);
        }

        //클래스 메소드 안에서는 인스턴스변수를 쓸수 없음 (반대로 인스턴스 메소드에 클래스 변수는 사용 가능함)
        /*
        public static void showInfo2() {

            Console.WriteLine("ID : " + id);
            Console.WriteLine("NAME : " + name);
            Console.WriteLine("AGE : " + age);
            Console.WriteLine("ADDRESS : " + addr);
        }
        */
        public static string gerSchool() {
            return SCHOOL;
        }


    }
}

'C# > C# Basic' 카테고리의 다른 글

C# Class : 클래스 Singleton  (0) 2022.12.18
C# Class : 클래스 01  (0) 2022.12.15
C# Queue : 큐  (0) 2022.12.12
C# Stack : 스택  (0) 2022.12.10
C# Method : 메서드  (0) 2022.12.09