728x90
728x90
= Overriding + Overload
<문제 > (난이도 중 ) (마지막 부분 다시 풀어보기)
/* 요구사항
* Calculator를 부모클래스로 선언하세요.
* Calculator를 상속받는 Computer클래스 생성 합니다.
*
* Calculator의 멤버변수 result, pi를 선언하세요
* Calculator의 메서드
* add(int) - result에 값을 누적시키는 기능
* sub(int) - result에 값을 차감시키는 기능
* circle(int) - pi를 이용해서 원의 넓이를 구하는 기능
*
* Computer클래스의 메서드
* Math.PI를 사용해서 원의넓이를 구하도록 circle 메서드를 오버라이딩하세요
*
* 메인클래스에서 Calculator, Computer를 생성하고 메서드를 확인하세요.
*------------------------------------------------------------
*Computer클래스에 rect메서드를 오버로딩
*rect메서드는 빗변을 받아서, 정사각형의 넓이, 직사각형의 넓이, 직육면체의 넓이를 반환하도록 오버로딩
*/
<정답>
누적된 값:6
차감된 값:3
계산기로 계산한 원의 넓이 :50.24
컴퓨터로 계산한 원의 넓이:50.26548245743669
16.0
20.0
120.0
<해설>
< Calculator>
package quiz05;
public class Calculator {
int result;
double pi=3.14; //변하지 않는 수이기 떄문에.
Calculator(){
result=1;
}
int add(int a){
result+=a;
return result;
}
int sub(int b) {
result-=b;
return result;
}
double circle(int r) {
return pi*(r*r);
}
}
package quiz05;
public class Computer extends Calculator{
//오버라이딩
double circle(int r) {
return r*r*Math.PI;
}
//오버로딩
double rect(double a) {
return a*a;
}
double rect(double a, double b) {
return a*b;
}
double rect(double a,double b,double c) {
return a*b*c;
}
}
< MainClass >
package quiz05;
public class MainClass {
public static void main(String[] args) {
Calculator cal = new Calculator();
System.out.println("누적된 값:"+cal.add(5));
System.out.println("차감된 값:"+cal.sub(3));
System.out.println("계산기로 계산한 원의 넓이 :"+cal.circle(4));
//여기서부터 모름
Computer com=new Computer();
System.out.println("컴퓨터로 계산한 원의 넓이:"+com.circle(4));
System.out.println(com.rect(4));
System.out.println(com.rect(4,5));
System.out.println(com.rect(4,5,6));
}
}
모른다고 적었던 부분부터 다시 공부하기~ 오버로딩 관련되어서도 있는데, 관련 이론 정리할것.
728x90
'수업 복습하기 > Java Quiz' 카테고리의 다른 글
Quiz 29 - 오버로딩 + 배열 (0) | 2021.08.30 |
---|---|
Quiz 27 - 상속 + Method (0) | 2021.08.30 |
Quiz 26 - 생성자 + Method (2) (0) | 2021.08.29 |
Quiz 25 - 생성자 + Method (0) | 2021.08.29 |
Quiz 24 - Method 연습 (0) | 2021.08.29 |