(C#) 17. 객체지향의 시작 (OOP)
Object-Oriented Programming
(C#) 17. 객체지향의 시작 (OOP)
#
- 최초 작성일: 2021년 3월 21일(월)
##
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
using System;
namespace StartOOP
{
// 객체 (OOP Object Oriented Programming)
// Knight
// 속성: hp, attack, pos
// 기능: Move, Attack, Die
// Ref 참조
class Knight
{
public int hp;
public int attack;
public Knight()
{
hp = 100;
attack = 10;
Console.WriteLine("생성자 호출!");
}
public Knight(int hp)
{
this.hp = hp;
Console.WriteLine("int 생성자 호출!");
}
public Knight Clone()
{
Knight knight = new Knight();
knight.hp = hp;
knight.attack = attack;
return knight;
}
public void Move()
{
Console.WriteLine("Knight Move");
}
public void Attack(){
Console.WriteLine("Knight Attack");
}
}
// 복사
struct Mage
{
public int hp;
public int attack;
}
class Program
{
static void KillMage(Mage mage)
{
mage.hp = 0;
}
static void KillKnight(Knight knight)
{
knight.hp = 0;
}
static void Main(string[] args)
{
//Mage mage = new Mage(); // struct 는 new를 생략가능
Mage mage;
mage.hp = 100;
mage.attack = 50;
//KillMage(mage);
Mage mage2 = mage;
mage2.hp = 0;
Knight knight = new Knight(); // 객체 생성
knight.hp = 100;
knight.attack = 10;
// KillKnight(knight);
//Knight knight2 = knight;
//knight2.hp = 0;
Knight knight2 = knight.Clone();
knight2.hp = 0;
Console.WriteLine($"mage.hp: {mage.hp}");
Console.WriteLine($"knight.hp: {knight.hp}");
Console.WriteLine($"knight2.hp: {knight2.hp}");
}
}
}
Result
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.
