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 발생

 

⭐ 생성자의 호출 순서 유의

 

 

 

📚 참고 자료

 

[Java]class: 오버라이딩(overriding)과 오버로딩(overloading)

TIL이나 알고리즘 문제 풀이 정도 업로드 하였지만 공부하면서 기록하는게 리마인드도 되고 좋을 것 같다는 생각이 들어 오늘부터 시작한다.전문적인 기술 블로그가 아닌 개인적으로 공부하며

velog.io