virtual 키워드는

기본 클래스에서 정의된 메서드를

파생 클래스에서 재정의하도록 허용

 

static, abstract, private 한정자와 함께 사용 불가

 

override 한정자?

상속된 메서드의 구현을 확장하거나 수정

 

https://www.youtube.com/watch?v=kmsocjH-keQ&list=PLTFRwWXfOIYBmr3fK17E0VhKPyYrGy75z&index=39

 

base 키워드?

파생 클래스 내에서 기본 클래스의 맴버에 엑세스하는데 사용

 

부모클래스에서 virtual
파생 클래스에서 override

자식 클래스에서 부모클래스 맴버 엑세스 base

 

 

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

namespace Step37_2
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Marine marine = new Marine();
            marine.name = "마린1";

            Firebat firebat = new Firebat();
            firebat.name = "파이어뱃1";

            marine.Attack();
            firebat.Attack();
        }
    }
}

 

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

namespace Step37_2
{
    class TerranUnit
    {
        public string name;
        //생성자
        public TerranUnit()
        {
            Console.WriteLine("TerranUnit 클래스의 생성자");
        }
        
        public virtual void Attack()
        {
            Console.WriteLine("{0}이(가) 공격 합니다", this.name);
        }
        protected void Reload(string weaponName) //자식만 접근 가능
        {
            Console.WriteLine("{0}이(가) {1}을 장전을 합니다", this.name, weaponName); ;
        }
    }
}

 

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

namespace Step37_2
{
    internal class Marine : TerranUnit
    {
        //생성자
        public Marine()
        {
            Console.WriteLine("Marine클래스의 생성자");
        }
        public override void Attack()
        {
            base.Reload("총");
            Console.WriteLine("{0}이(가) 총으로 공격합니다.", this.name);
        }
    }
}

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;

namespace Step37_2
{
    internal class Firebat : TerranUnit
    {
        public Firebat()
        {
            Console.WriteLine("Firebat클래스의 생성자");
        }

        public override void Attack()
        {
            base.Reload("화염방사기");
            Console.WriteLine("{0}이(가) 화염방사기로 공격합니다.", this.name);
        }
        
        
    }
}

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

[C#] 업캐스팅, 다운캐스팅  (0) 2024.06.13
[C#] 생성자 연결  (0) 2024.06.12
[C#] 상속  (1) 2024.06.03
[C#] static 한정자  (0) 2024.06.02
[C#] this 키워드  (0) 2024.05.31

문자열 보간이란?

 

값을 포함하는 문자열 출력

 

Conosole.Write는 값을 출력만 한다

Console.WriteLine은 값을 출력하고 줄바꿈

 

방법 1

 

https://www.youtube.com/watch?v=PPjhCXCmtIs&list=PLTFRwWXfOIYBmr3fK17E0VhKPyYrGy75z&index=14

 

$ 와 " 사이에 공백이 있으면 안된다.

{ } 즉 중괄호는 쌍으로 있어야 한다.

 

방법 2

https://www.youtube.com/watch?v=PPjhCXCmtIs&list=PLTFRwWXfOIYBmr3fK17E0VhKPyYrGy75z&index=14

 

 

 

 

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

namespace Step15
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //홍길동님 안녕하세요 출력
            //Console.WriteLine("홍길동님 안녕하세요");

            //이름이 변경될수 있으므로
            //"홍길동" 문자열 값을 변수에 저장
            //문자열 변수 name 선언
            string name = "홍길동"; // 변수 정의 및 값 할당
            //Console.WriteLine(name);

            //Write와 WriteLine의 차이
            Console.WriteLine(name);
            Console.Write(name);

            name = "임꺽정";
            Console.Write(name);
            Console.WriteLine(name);

            Console.WriteLine($"{name}님 안녕하세요");
            Console.WriteLine("{0}님 안녕하세요", name);

            //여러 변수의 있는 값도 가능
            //출력문 하나로 "33세 임꺽정님 안녕하세요." 출력하기
            //나이는 변할 수 있으므로 변수에 할당
            //정수형 age 변수 선언
            int age = 33;
            Console.WriteLine($"{age}세 {name}님 안녕하세요.");
            Console.WriteLine("{0}세 {1}님 안녕하세요.", age, name);
            //인덱스는 0부터 시작 1씩 증가, {}는 쌍으로 있어야 한다
            //값(변수) 목록은 ,(콤마)로 구분한다.
        }

    }
}

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

[C#] 박싱과 언박싱  (0) 2024.05.25
[C#] 값형식과 참조형  (0) 2024.05.25
[C#] 형식 변환  (0) 2024.05.25
[C#] 열거형식  (0) 2024.05.25
[C#] 상수  (0) 2024.05.25

+ Recent posts