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; } // 상속 오버라이딩 패키지 제어자 다형성 }