static 필드와 메소드 예제


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
using System;
 
namespace StaticKeywordEx
{
    class ClassA
    {
        public static int valueA;
        public int valueB;
 
        public static void printA() {
            Console.WriteLine ("static 멤버 변수 valueA : {0}", valueA);
        }
 
        public void printB() {
            Console.WriteLine ("non-static 멤버 변수 valueB : {0}", valueB);
        }
    }
 
    class MainClass
    {
        public static void Main (string[] args)
        {
            ClassA.valueA = 123;
            ClassA.printA ();    // static 멤버 함수 호출
 
            ClassA objA = new ClassA ();
            objA.valueB = 456;
            objA.printB ();        // non-static 멤버 함수 호출
        }
    }
}
cs

this 생성자 예제


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
using System;
 
namespace CSharp_ThisConstructor
{
    class ClassA
    {
        string strA;
        string strB;
        string strC;
 
        public ClassA()
        {
            this.strA = "첫 번째 생성자 값은? 없다";
        }
        
        public ClassA(int b) : this()
        {
            this.strB = "두 번째 생성자 값은? " + b.ToString();
        }
        
        public ClassA(int b, int c) : this(b)
        {
            this.strC = "세 번째 생성자 값은? " + b.ToString() + ", " + c.ToString();
        }
        
        public void printFields()
        {
            Console.WriteLine("*******************", strA, strB, strC);
            Console.WriteLine("{0}\n{1}\n{2}\n", strA, strB, strC);
        }
    }
    
    class Program
    {
        static void Main(string[] args)
        {
            ClassA obj1 = new ClassA();
            obj1.printFields();
            
            ClassA obj2 = new ClassA(123);
            obj2.printFields();
            
            ClassA obj3 = new ClassA(45678);
            obj3.printFields(); obj1 = new ClassA();
            
            Console.ReadKey();
        }
    }
}
 
cs


base 생성자 예제

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
using System;
 
namespace BaseConstructorEx
{
    class ClassA
    {
        protected string name;
        public ClassA(string name)
        {
            this.name = name;
            Console.WriteLine ("**************");
            Console.WriteLine("클래스A의 이름은 {0} 입니다"this.name);
        }
    }
    
    class ClassB : ClassA
    {
        public ClassB(string name) : base(name)
        {
            Console.WriteLine("클래스B의 이름은 {0} 입니다."this.name);
            Console.WriteLine ("**************");
        }
    }
    
    class Program
    {
        static void Main(string[] args)
        {
            ClassA a = new ClassA("토끼");
            ClassB b = new ClassB("거북이");
            
            Console.ReadKey();
        }
    }
}
 
cs


클래스 형 변환 예제


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
using System;
 
namespace TypeCastingEx
{
    class ClassA 
    {
    }
 
    class ClassB : ClassA 
    {
    }
 
    class MainClass
    {
        public static void Main (string[] args)
        {
            ClassA objA = new ClassA ();
            ClassB objB = new ClassB ();
 
            ClassA objC = (ClassA)objB;
            ClassA objD = objB as ClassA;
 
            if (objA is ClassB) {
                Console.WriteLine ("objA == ClassB is true");
            } else {
                Console.WriteLine ("objA == ClassB is false");
            }
 
            if (objD is ClassA) {
                Console.WriteLine ("objD == ClassA is true");
            } else {
                Console.WriteLine ("objD == ClassA is false");
            }
        }
    }
}
c


메소드 오버라이딩 예제

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
using System;
 
namespace MethodOverideEx
{
    class ClassA
    {
        protected int valueA;
 
        public virtual void printValue() {
            Console.WriteLine ("Class A 수행 값은 : {0}"this.valueA);
        }
    }
 
    class ClassB : ClassA {
 
        public ClassB(int val) {
            this.valueA = val;
        }
 
        // 재정의
        public override void printValue() {
            Console.WriteLine ("Class B 수행 값은 : {0}"this.valueA);
        }
    }
 
    class MainClass
    {
        public static void Main (string[] args)
        {
            ClassB objB = new ClassB (123);
            objB.printValue ();    // 재정의 한 코드 수행
        }
    }
}
cs



중첩 클래스 예제


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
namespace InnerClassEx
{
    public class ClassA
    {
        private int valueA;
 
        public class InnerClassA
        {
            private ClassA parent;
            
            public InnerClassA()
            {
            }
 
            public InnerClassA(ClassA parent)
            {
                this.parent = parent;
                this.parent.valueA = 10;    // privite 멤버도 접근 가능
            }
 
            public void printA() {
                Console.WriteLine ("클래스A의 값A는 {0}"this.parent.valueA);
            }
        }
    }
 
    class MainClass
    {
        public static void Main (string[] args) {
            ClassA obj = new ClassA ();
            ClassA.InnerClassA innerObj = new ClassA.InnerClassA(obj);
            innerObj.printA ();
        }
    }
}
cs


분할 클래스 예제

FileA.cs

1
2
3
4
5
6
7
8
9
10
11
using System;
 
namespace PartialClassEx
{
    partial class ClassFile
    {
        int valueA;
        int valueB;
        int valueC;
    }
}
cs


FileB.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
using System;
namespace PartialClassEx
{
    partial class ClassFile
    {
        public ClassFile ()
        {
            valueA = 123;
            valueB = 456;
            valueC = 789;
        }
    }
}
cs


FileC.cs

1
2
3
4
5
6
7
8
9
10
11
12
using System;
namespace PartialClassEx
{
    partial class ClassFile
    {
        public void printValues() {
            Console.WriteLine(valueA);
            Console.WriteLine(valueB);
            Console.WriteLine(valueC);
        }
    }
}
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
using System;
 
namespace PartialClassEx
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            ClassFile cf = new ClassFile ();
            cf.printValues ();
        }
    }
}
cs

클래스 객체의 복사 예제

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
using System;
 
namespace ClassCopyEx
{
    class MainClass
    {
        class Enemy {
            public int level;
            public int exp;
 
            public Enemy() {}
            public Enemy(int level, int exp) {
                this.level = level;
                this.exp = exp;
            }
 
            public Enemy DeepCopy() {
                Enemy objA = new Enemy (this.level, this.exp);
                return objA;
            }
 
            public void printInfo() {
                Console.WriteLine ("Level : {0}"this.level);
                Console.WriteLine ("Exp : {0}"this.exp);
            }
        }
 
        public static void Main (string[] args)
        {
            Enemy objA = new Enemy ();
            objA.level = 5;
            objA.exp = 80;
 
            // 얕은 복사
            Enemy objB = objA;
            objB.exp = 120;
            objA.printInfo ();
            objB.printInfo ();
 
            // 깊은 복사
            Enemy objC = objA.DeepCopy();
            objC.exp = 200;
            objA.printInfo ();
            objC.printInfo ();
        }
    }
}
 
cs


+ Recent posts