[C#] virtual과 abstract (추상 클래스)

2022. 5. 2. 22:14·언어/C#
728x90

·virtual

상속 받는 클래스에서 virtual에 있는 내용 중 필요한 것만 골라서 구현해주면 된다.

​

·abstract (추상 클래스)

상속 받는 클래스에서 abstract에 있는 내용을 반드시 구현해주어야한다.

abstract는 추상 클래스다. 추상 클래스에 있는 멤버는 구현할 수 없고 상속받는 곳에서 구현해주어야 한다.

 

using System;

namespace ConsoleApp1
{
    class Program
    {
        public abstract class Essential
        {
            public virtual void Breath()
            {
                Console.WriteLine("숨쉬기");
            }

            public abstract void Fly();
            public abstract void Swim();

        }

        public class Bird : Essential
        {
            public override void Fly()
            {
                Console.WriteLine("날기");
            }
            public override void Swim()
            {
                Console.WriteLine("죽음");
            }

        }

        static void Main(string[] args)
        {
            Bird bird = new Bird();
            bird.Breath();
        }
    }
}

 

 

Bird에서 Breath를 구현해주지 않았음에도 자동으로 Essential에 있는 Breath가 구현됐다.

만약 Fly나 Swim을 구현해주지 않을 경우 아래의 오류가 나타나게 된다.

 

 

물론 Bird에서 새롭게 Breath를 구현해줄 수도 있다.

 

public class Bird : Essential
{
    public override void Fly()
    {
        Console.WriteLine("날기");
    }
    public override void Swim()
    {
        Console.WriteLine("죽음");
    }
    public override void Breath()
    {
        Console.WriteLine("헉헉");
    }
}

 

https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/virtual

 

virtual - C# 참조

virtual(C# 참조) 아티클 04/06/2022 읽는 데 4분 걸림 기여자 14명 이 문서의 내용 --> virtual 키워드는 메서드, 속성, 인덱서 또는 이벤트 선언을 수정하고 파생 클래스에서 재정의하도록 허용하는 데 사

docs.microsoft.com

 

https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/abstract

 

abstract - C# 참조

abstract(C# 참조) 아티클 04/06/2022 읽는 데 5분 걸림 기여자 16명 이 문서의 내용 --> abstract 한정자는 수정되는 항목에 누락되거나 불완전한 구현이 있음을 나타냅니다. abstract 한정자는 클래스, 메서

docs.microsoft.com

 

728x90

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

[C#] Volatile이란?  (0) 2022.05.26
[C#] Dictionary란  (0) 2022.05.02
[C#] Queue과 Stack  (0) 2022.05.02
[C#] 함수, 클래스, 객체, 인스턴스, 생성자  (0) 2022.04.25
[C#] Generic Type 사용하기  (0) 2022.04.25
'언어/C#' 카테고리의 다른 글
  • [C#] Volatile이란?
  • [C#] Dictionary란
  • [C#] Queue과 Stack
  • [C#] 함수, 클래스, 객체, 인스턴스, 생성자
돌멩이수프
돌멩이수프
Information technology
  • 돌멩이수프
    WHAT DOES "IT" STAND FOR?
    돌멩이수프
  • 전체
    오늘
    어제
    • 분류 전체보기 (237) N
      • 언어 (73)
        • html (3)
        • css (1)
        • java (6)
        • C (26)
        • C++ (2)
        • C# (29)
      • 공부 (7)
        • Unity (43)
        • 게임 서버 (26)
        • 네트워크 (5)
        • 데이터베이스 (7)
        • EFCore (19)
        • 기타 (14)
        • Git (5)
        • 운영체제 (1)
        • 소프트웨어공학 (21)
      • 2024-여름 (12)
      • 자기 관리 (2) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    coding
    java
    EFCore
    C#
    자바
    tcp
    유니티
    C언어
    네트워크
    백준
    게임서버
    C
    Python
    unity
    HTML
    디자인패턴
    라즈베리파이
    EntityFramework
    코딩
    Entityfamework
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
돌멩이수프
[C#] virtual과 abstract (추상 클래스)
상단으로

티스토리툴바