인프런 커뮤니티 질문&답변

hy ki님의 프로필 이미지
hy ki

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

UI Manager #2

질문1. base.Init() 컴파일 에러가 발생합니다

작성

·

612

·

수정됨

0

메시지: CS0205 추상 기본 멤버를 호출할 수 없습니다
https://learn.microsoft.com/ko-kr/dotnet/csharp/misc/cs0205

원인 추정: 2023. 01. 05 이후 abstract 메서드 본문을 호출하는 시도를 문법적으로 중단

(abstract 는 메서드 껍데기만 동일하게 가져가는 것을 의도로 할 때만 사용 가능하게끔 하고, base 를 호출하며 사용할 때는 virtual 를 쓰도록 강제로 권장

 

안 좋은 대안: Start() 실행 순서 관리를 설정에서 직접 관리. '편집 -> 프로젝트 설정 -> 스크립트 실행 순서로 이동하여 스크립트의 실행 순서를 설정'

대체 시도: UI_Base 의 Init() 를 abstract 대신 virtual 로 변경

 

질문 요지: virtual 로 변경해도 문제가 없을까요?

답변 3

0

가상메서드로 변경하면 오류가 해결되는 이유는

기본클래스에서 정의해놓은 가상메서드를

파생클래스에서 재정의 및 기능의 확장을하여

사용할 수 있기 때문에

Base.Init()으로 기본클래스에 접근이 가능합니다

맞나요?ㅎㅎ;;

0

추상메서드 는 메서드의 선언만 해놓고

파생클래스에서 정의를 해주어야하는대

파생클래스에서 Base.Init()으로

구현되지않은 추상메서드에

접근하려해서 오류입니다.!

맞나요?ㅎㅎ;;

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

네 virtual로 변경해도 전혀 상관 없습니다!

hy ki님의 프로필 이미지
hy ki

작성한 질문수

질문하기