입력한 숫자의 합, 차, 평균 구하기
* 부모 클래스
package com.kh.day08.oop.abstractptpkg.exercise;
public abstract class Calculator {
// 합 메소드
public abstract int add(int a, int b);
// 차 메소드
public abstract int substract(int a, int b);
// 평균 메소드
public abstract double average(int [] a);
}
// 추상클래스(부모클래스)에 꼭 구해야하는 합, 차, 평균 메소드 생성
* 자식 클래스
package com.kh.day08.oop.abstractptpkg.exercise;
import java.util.Scanner;
public class GoodCalc extends Calculator {
@Override
public int add(int a, int b) {
// a와 b를 합하여 리턴!
// int result = a + b;
// return result;
// 위와 같이 작성할 수도 있지만, retrun a+b 로 간략하게 리턴 값 작성할 수 있음.
return a+b;
}
@Override
public int substract(int a, int b) {
// a와 b를 빼서 리턴!
// int minus = a - b;
return a-b;
}
@Override
public double average(int[] a) {
// 배열을 입력받아 평균을 구한 뒤 그 값을 리턴
// 평균 = 전체함 / 갯수
// 전체합은 배열에서 하나씩 꺼내서 합해줘야 하므로 누적합 해야함
// 누적합 => sum += num;
// a와 b를 입력받아 평균을 구한 뒤 그 값을 리턴
int sum = 0;
for(int i = 0; i < a.length; i++)
sum += a[i];
double avg = sum / (double)a.length;
return avg;
}
}
// 추상클래스에 필요한 메소드를 만들어놓고 실체클래스를 추상클래스를 상속해서 생성하면
// 이클립스에서 자동으로 오버라이드 할 수 있는 기능을 제공한다!
* 실행클래스
package com.kh.day08.oop.abstractptpkg.exercise;
public class CalcRun {
public static void main(String[] args) {
// Calculator calc = new Calculator();
// 추상클래스는 객체 생성이 불가능.
// 오류메세지 : Cannot instantiate the type Calculator
Calculator calc = new GoodCalc(); // 업캐스팅
int [] a = {1,2,3,4,5};
System.out.printf("합 : %d\n", calc.add(1, 2));
System.out.printf("차 : %d\n", calc.substract(20, 10));
System.out.printf("평균 : %.2f", calc.average(a));
}
}