기록장
메서드 오버로딩 & 오버라이딩 본문
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
'개발 > JAVA' 카테고리의 다른 글
final 클래스와 final 메소드 설명해줄게 (0) | 2022.05.19 |
---|---|
메소드의 재정의 (오버라이딩) (0) | 2022.05.17 |
상속에 대해서 설명해줄게 (0) | 2022.05.16 |
접근제한자 공부하면서 코드 짠거 (0) | 2022.05.15 |
파이널 필드랑 상수를 설명해 줄게 (0) | 2022.05.15 |
Comments