개발공부

c# 함수 상속

파란색까마귀 2022. 2. 13. 21:57

2016. 2. 26. 17:36

https://blog.naver.com/nagne2011/220639062533

 

namespace ConsoleApplication4
{
      //추상 클래스
    abstract class Gun
    {
        public int damage = 1;
        public int ammo = 5;
       
 
        //추상함수 , C++에서 virtual 이라고 쓰던것. virtual 선언한 함수는 꼭 사용해야 한다
        public abstract void Fire(); //함수에 사용하면, class에도 abstract를 붙여줘야 한다(오류가 뜸)
    }
}
 
namespace ConsoleApplication4
{
      //추상 클래스
    abstract class Gun
    {
        public int damage = 1;
        public int ammo = 5;
       
 
        //추상함수 , C++에서 virtual 이라고 쓰던것. virtual 선언한 함수는 꼭 사용해야 한다
        public abstract void Fire(); //함수에 사용하면, class에도 abstract를 붙여줘야 한다(오류가 뜸)
    }
}
namespace ConsoleApplication4
{
    //인터페이스
    /// <summary>
    /// 변수를 가질 수 없고 함수만 가질 수 있다.
    /// 그러나 함수의 구현은 없다
    /// 만들어진 함수는 무조건 public이다
    /// 
    /// </summary>
    interface iReload
    {
        public void Reload();
 
    }
}
 
namespace ConsoleApplication4
{
    class Pistol : Gun, iReload, Iaim, Iscope
    {//추상함수를 상속받으니까 함수를 만들어줘야함
     //단, override한다고 표시를 해줘야함
        public override void Fire()
        {
            ammo -= 1;
            Console.WriteLine("탕");
        }
        public void Reload()
        {
            ammo = 10;
            Console.WriteLine("재장전");
        }
        public void Aim()
        {
            //화면키우기
            Console.WriteLine("크게보임");
        }
 
        public void Iscope.Aim()
        {
            //조준경으로 보기
            Console.WriteLine("조준경으로 보기");
        }
 
        public virtual void FastFire()  //이 클래스를 상속받아 이 함수를 재정의 할 일이 있으면 virtual처리
        {
            ammo -= 5;
            Console.WriteLine("탕탕탕탕탕");
        }
    }
}
 
 
namespace ConsoleApplication4
{
    class Program
    {
        static void Main(string[] args)
        {
            Pistol pt = new Pistol();
            pt.Fire();
 
            Console.ReadLine();
        }
    }
}
728x90

'개발공부' 카테고리의 다른 글

c# 텍스트 저장  (0) 2022.02.13
c# try-catch  (0) 2022.02.13
c# 함수 기초  (0) 2022.02.13
C# 기초 자료형  (0) 2022.02.13
벡터, 행렬  (0) 2022.02.13