본문 바로가기

:SERVER/C#(C Sharp)

클래스, 생성자, static

반응형
using System;

namespace CSharp {
    // 객체 지향 OOP; Object Oriented Programming
    class Knight {
        // 필드. 필드는 인스턴스마다 제각각인 값을 가진다.
        static public int counter; // Knight 인스턴스 모두 공유. 오로지 하나만 존재.
        public int id;
        public int hp;
        public int attack;

        public void test() { } // 인스턴스에 종속됨
        static public void test2() { // 클레스에 종속됨
            // 정적 속성, 정적 메소드에서는 this키워드 사용 금지
            // 정적 속성에만 접근 가능.
        } 
        static public Knight CreateKnight() {
            Knight knight = new Knight();
            knight.hp = 100;
            knight.attack = 1;;
            return knight;
        }

        // 생성자
        public Knight() {
            hp=100;
            attack=10;
        }
        public Knight(int hp) : this() {
            this.hp = hp;
            this.attack = 10;
        }
        public Knight(int hp, int attack){
            this.hp = hp;
            this.attack = attack;
        }
        
        public Knight Clone() {
            Knight knight = new Knight();
            knight.hp = this.hp;
            knight.attack = this.attack;
            return knight;
        }
        public void Move() {
            System.Console.WriteLine("Knight Move");
        }
        public void Attack() {
            System.Console.WriteLine("Knight Attack");
        }
    }

   
    class Program{
        // Main 함수
        static void Main(string[] args) {
            Knight knight = new Knight(); 
            knight.hp = 100;
            knight.attack = 10;
            knight.Move();
            knight.Attack();

            knight.test(); // 함수 - 인스턴스에서 호출
            Knight.test2(); // static 함수 - 클래스에서 호출
        }
    }
}
반응형

':SERVER > C#(C Sharp)' 카테고리의 다른 글

클래스 특성 - 상속성/은닉성/다형성  (0) 2022.09.16
스택,힙 메모리, 클래스  (0) 2022.09.16
함수, ref, out  (0) 2022.09.15
반복문  (0) 2022.09.14
분기문(if문, switch문, 삼항연산자)  (0) 2022.09.14