public class App3 {
public static void main(String[] args) {
System.out.println("범위: " + Calc.range);
Calc.changeRange(999);
Calc calc1 = new Calc(99); // <- 객체
Calc calc2 = new Calc(9);
calc1.add(30, 70);
calc2.sub(-1000, 9000);
// ctrl + f5
calc1.rec();
calc2.rec();
// sysout
System.out.println("생산번호: " + calc1.numbering + "," + calc2.numbering);
calc1.add(2.5, 3.5);
calc1.add(1,2,3,4,5,6,7,8,9,10);
Calc calc3 = new Calc();
Calc calc4 = new Calc(9999);
System.out.println("생산번호: " + calc3.numbering + "," + calc4.numbering);
System.out.println("제곱: " + calc3.calculate(2, 4));
}
}
class Calc { //<-- 클래스
double recent; //인스턴스 변수
int numbering;
static int count = 0; //클래스 변수
static int range = 9999;
Calc(){ //<-- 생성자
count++;
numbering = count;
}
Calc(int r){
this();
range = r;
}
void add(int a, int b){ // <-- 인스턴스 메서드
recent = a+b;
if(recent > range){
recent = range;
}
System.out.println("덧셈: " + recent);
}
void add(double a, double b){ // <- 메서드 오버로딩
recent = a + b;
System.out.println("실수 덧셈: " + recent);
}
void add(int ... numbers){ // <- 가변 인자
recent = 0;
for(int i = 0; i< numbers.length; i++){
recent += numbers[i];
}
System.out.println("여러개의 숫자 더하기: " + recent);
}
double sub(int a, int b){
recent = a-b;
if(recent < -range){
recent = -range;
}
return recent;
}
int calculate(int x, int n){
if(n == 0){
return 1;
}
return calculate(x, n-1)*x;
}
void rec(){
System.out.println("최근 값:" + recent);
}
static void changeRange(int n){ // <-- 클래스 메서드
range = n;
}
// 상속 오버라이딩 패키지 제어자 다형성
}