기록장

메서드 오버로딩 & 오버라이딩 본문

개발/JAVA

메서드 오버로딩 & 오버라이딩

HJJJJJ 2022. 5. 17. 23:35
728x90

메서드 오버로딩 

-같은 이름의 메서드를 인자만 다르게 작성

 

메서드 오버라이딩 

-부모클래스의 메서드를 자식클래스에서 재정의

 

--->메서드 오버라이딩

재정의 덮어쓰는거라고 했으니까

3번라인에 Shape에서--> 8번라인에 Circle로 덮어지고

-->13번 라인에 Square로 덮어짐 

 


이 경우는

2라인 static가 있어서 메소드 오버라이딩이 안돼 ( 걍 오버라이딩이랑 다른 개념이고

각각 적용이 된다고 기억해~

 

이 코드를 보고 

 

이걸 풀어보자

 

A a = new B() 

이 부분 보이지? 부모는 날 낳을 수 있으니까 A a = new B 가능 ->B에 있는걸만듦

 

a.f라는건 스테틱이잖아?

 

 


 

원래는 메소드 오버라이딩을 했기 때문에 B에 있는 요 f()가 호출되는게 맞아 근데

스테틱이잖아? -> 얘는 메소드 오버라이딩 개념이 아예 적용이 안돼 

그러면 일반 변수처럼 되는거임 (나랑 가까이있는거)

 

 

-->일단 a.f()를 출력해보자

지금 요기서 A는 부모클래스잖아? 그지? 그러면 지금 부모랑 가까운 f를 찾으면돼!

그러면 A가 가깝잖아? 그러면 A가 가지고 있는 1을 출력하는거지!

좀 알겠어?

 


 

자 그러면 이제 여기서 

a.g()를 출력해보자!

a.g는 보면 스테틱이 없어! 

그래서 오버라이딩이 적용 돼 

4가 출력되는거지 


 

 

 

 

728x90
Comments