추상 클래스를 상속 받는 친구가 하는 일 🌞
추상클래스가 뭘 하는지 알아봤으면 이제 써먹어 볼까요 ?
CalculatorDecoPlus 라는 Class 가 있어요.
이건 언니가 아는 클래스 처럼 생겼죠 ?
class CalculatorDecoPlus {
}
근데 요로코롬 extends 를 써주고 Calculator를 써준다는 것이 뭔 뜻인지 알아요 ?
class CalculatorDecoPlus extends Calculator {
}
여기서도 단어 먼저 보면 extends 라는 뜻을 찾아보면
확장한다! 즉 상속을 받는거에요!
즉, 아래처럼 말하는 거에요.
CalculatorDecoPlus라는 Class 는
Calculator 에 모든 기능을 상속 받겠다.
그런데 상속만 받으면 아래처럼 에러가 나요.
이런 에러래요 근데 이 버튼 보여요 ?
이거 누르면 어떻게 되냐면
아래처럼 오버라이드가 두개가 생겨요.
Calculator 가 말한거에요.
이자식아 너 내 재산 상속받고 싶으면 내가 정의한 추상 메소드 구현해야 해 ~
아니면 넌 날 쓸 수 없어 @^^@
그래서 CalculatorDecoMinus 는 어미(Calculator)의 기능을 쓰면
자신이 해야 할 일들이 줄어들기 때문에 할 수 없이
엄마 알았어요 저는 엄마가 정의한 run() 도 필요하고 left와 right 도 필요하기 때문에 정의 할께요!
라고 하고 있는거에요.
class CalculatorDecoMinus extends Calculator {
public void sum(){
System.out.println("- sum :"+(this.left+this.right));
}
public void avg(){
}
}
이해를 시키려고 위에처럼 말했지만 사실은 Calculator 가 가진 계산 기능을
다른 누군가 필요로 하는 상황이 빈번하게 사용하는경우 사용해요.
공통적인 기능을 여러번 구현하면 중복되는 코드도 많아지고 더러워지고 산으로 가고...
이 부분이 이해 되면 나중에 다시 설명해줄께요. 🤪
근데 자세히 보면 이렇게 써있는데 this.left this.right 는
아무리 봐도 CalculatorDecoMinus Class 에서 선언하지 않았는데,,
어떻게 쓰는거 같은지 한번 생각 해봐요!
System.out.println("- sum :"+(this.left+this.right));
아까 Calculator 에서 가지고 있던 변수들 이죠 ?
Calculator 를 상속 받았기 때문에
Calculator 의 변수들에도 접근하고 자신의 변수처럼 사용할 수 있는거에요!
엄마 간식을 내 간식처럼 먹고
엄마 신발을 내 신발처럼 신는 것 처럼 ?
엄마가 sum 이랑 avg 오버라이드 하지 않으면 안된다고 했으니까 마저 구현해주면
class CalculatorDecoMinus extends Calculator {
public void sum(){
System.out.println("- sum :"+(this.left+this.right));
}
public void avg(){
System.out.println("- avg :"+(this.left+this.right)/2);
}
}
그래서 지금 Calculator 를 상속 받은 CalculatorDecoMinus 의 일은 끝이 난거에요.
'개발중 > Java' 카테고리의 다른 글
추상 클래스 이해하기 (0) | 2021.05.19 |
---|---|
추상 클래스를 상속 받는 친구를 이용하기 (0) | 2021.05.19 |
추상 클래스가 하는 일 (0) | 2021.05.19 |
문자열이 List에 포함 되었는지 여부 확인 (0) | 2021.05.18 |
Java - String 날짜형 Type 검사 (0) | 2021.05.17 |