비주얼 베이직 .NET에서 상속은 Inherits 키워드를 통해 구현되며, 이를 통해 기존 클래스를 기반으로 새로운 클래스를 생성하여 그 속성과 메소드를 상속받을 수 있습니다. 이는 코드를 재사용하고 중복 없이 기능을 확장할 수 있게 해줍니다.
상속 시 중요 사항:
Protected 수정자로 표시하거나 오버라이드해야 하는 메서드에 Overridable/Overrides를 사용합니다.MustInherit 키워드를 사용하고 상속을 금지하기 위해 NotInheritable을 사용합니다.예:
' 추상 클래스 Public MustInherit Class Animal Public MustOverride Sub MakeSound() End Class ' 상속된 클래스 Public Class Dog Inherits Animal Public Overrides Sub MakeSound() Console.WriteLine("Woof!") End Sub End Class
특징:
Implements 키워드를 통해 구현됩니다.비주얼 베이직 .NET에서 클래스가 동시에 여러 클래스를 상속할 수 있습니까?
잘못된 답변: 네, 쉼표로 가능 (또는 인터페이스를 통해).
올바른 답변: 아니요, 비주얼 베이직 .NET에서는 클래스의 단일 상속만 지원되지만 여러 인터페이스를 구현할 수 있습니다.
예:
Public Interface IRunnable Sub Run() End Interface Public Interface ISwimmable Sub Swim() End Interface Public Class Person Implements IRunnable, ISwimmable Public Sub Run() Implements IRunnable.Run ' 구현 End Sub Public Sub Swim() Implements ISwimmable.Swim ' 구현 End Sub End Class
이야기
대규모 회계 시스템에서 엔지니어가 두 클래스를 상속하려고 했습니다 (예:Employee와Manager). 코드는 컴파일되지 않았고, 프로젝트가 며칠 지연되었습니다: 설계를 재구성하고 기능을 인터페이스로 분리해야 했습니다.
이야기
젊은 개발자가 기본 클래스의 메서드를Overridable로 표시하는 것을 잊었지만, 상속 클래스에서 이를 오버라이드하려고 했습니다. 컴파일 오류가 발생하여 팀이 디버깅하는 데 시간을 낭비했습니다.
이야기
어떤 프로젝트에서 기본 클래스의 속성이 실수로 공개된 상태로 남아 있었고, 이를 상속 받은 클래스에서 잘못 수정하여 캡슐화가 깨지고 찾기 어려운 버그가 발생했습니다.