2019-10-17 19일차 클래스의 상속

Console Programming/C# Console 2019. 10. 17. 14:16

Ashe 와 Garen 클래스가 Champion클래스를 상속받아서

Champion의 Attack 메서드를 재정의하고, 사용하고 있다.

 

부모클래스의 멤버에 엑세스하려면 base. 을 사용한다.

 

 

 

Program.cs

namespace Syntax03
{
    class Program
    {
        static void Main(string[] args)
        {
            new App();

        }
    }
}

App.cs

namespace Syntax03
{
    public class App
    {
        public App()
        {
            Ashe ashe = new Ashe();
            Garen garen = new Garen();

            ashe.name = "애쉬";
            ashe.damage = 10;
            garen.name = "가렌";
            garen.damage = 15;

            ashe.Attack(garen);
            garen.Attack(ashe);


        }
    }
}

Champion.cs

using System;

namespace Syntax03
{
    public class Champion
    {
        public string name;
        public int damage;
        public Champion()
        {

        }
        public virtual void Attack(Champion target)
        {
            target.hit(this.damage);
        }

        public void hit(int damage)
        {
            Console.WriteLine($"{damage}만큼 데미지를 입었습니다.");
        }
    }
}

Ashe.cs

using System;

namespace Syntax03
{
    public class Ashe : Champion
    {
        public Ashe()
        {

        }

        public override void Attack(Champion target)
        {
            base.Attack(target);
            Console.WriteLine($"{this.name}이 활을 쏘며 {target.name}을 공격합니다");

        }
    }
}

Garen.cs

using System;

namespace Syntax03
{
    public class Garen : Champion
    {
        public Garen()
        {

        }

        public override void Attack(Champion target)
        {
            base.Attack(target);
            Console.WriteLine($"{this.name}이 검을 휘두르며 {target.name}을 공격합니다");

        }
    }
}

 

 

: