C#/WPF
[WPF] 생성자 Overloading (2)
HJ0216
2024. 5. 11. 22:25
프로젝트 준비를 하면서 미리 코드를 작성해보다 마침 정리했던 개념인 생성자 Overloading를 사용해보았습니다.
상속을 받으면 NullPointerException이 나고, 하나의 생성자를 사용하면 문제없이 동작하여 생성자를 상속받을 때 부모 생성자의 코드 삽입 위치를 한 번 정리해보고자 합니다.
🤓 처음에 글을 작성할 때, Overloading을 Overriding으로 잘못 적었는데,
다시 한 번 정리하면 다음과 같습니다.
Overloading: 메서드 이름은 같지만 매개변수 개수나 타입등을 달리한 여러 개의 메서드를 정의하는 것
Overriding: 부모 클래스에서 상속받은 메서드의 내용을 '재정의' 하는 것
⭐ 현재 생성자의 경우, 이름은 같지만 매개변수 개수가 다르게 정의하고 있으므로 Overloading
1
2
3
4
5
6
7
8
9
|
public ViewModelMain()
{
string name = TempPracticeModel.Name;
}
public ViewModelMain(PracticeModel model) : this()
{
TempPracticeModel = model;
}
|
만일 이러한 생성자 Overloading이 있을 경우,
코드의 실행 순서는
1. 매개변수가 없는 생성자
2. 매개변수가 있는 생성자
🚨 따라서, 매개변수가 있는 생성자에서 객체를 초기화해주는데 그보다 앞서 매개변수가 없는 생성자에서 해당 객체에 접근하고 있으므로 NullPointerException 발생
⭐ 생성자의 호출 순서 유의
📚 참고 자료