코드 그라데이션
[보충] 객체 지향 프로그래밍에 대한 이해 본문
객체 지향 프로그래밍이란?
계산기 만들기
class Calculator {
static int result = 0;
static int add(int num) {
result += num;
return result;
}
}
public class Sample {
public static void main(String[] args) {
System.out.println(Calculator.add(3));
System.out.println(Calculator.add(4));
}
}
실행 흐름
- 클래스 Cal 가 실행된다.
- Cal 클래스의 main 메서드가 호출된다.
- Calculator.add(3) 이 호출된다.
- add 메서드에서 result 변수에 3이 더해진다. result 변수는 현재 3이다.
- result 변수인 3이 반환되고 System.out.println 을 이용하여 콘솔에 출력된다.
- Calculator.add(4) 이 호출된다.
- add 메서드에서 result 변수에 4가 더해진다. result 변수는 현재 7이다.
- result 변수인 7이 반환되고 System.out.println 을 이용하여 콘솔에 출력된다.
- main 메서드의 실행이 종료된다.
실행 결과
3
7
그런데, 계산기 값을 계산할 때마다 이 짓거리(?)를 맥락없이 계속 반복할 것인가? 그건 좀...
static을 빼면 된다.
Calculator cal1 = new Calculator(); // 계산기1 객체를 생성한다.
Calculator cal2 = new Calculator(); // 계산기2 객체를 생성한다.
------------
변화 이전
class Calculator1 {
static int result = 0;
static int add(int num) {
result += num;
return result;
}
}
class Calculator2 {
static int result = 0;
static int add(int num) {
result += num;
return result;
}
}
public class Sample {
public static void main(String[] args) {
System.out.println(Calculator1.add(3));
System.out.println(Calculator1.add(4));
System.out.println(Calculator2.add(3));
System.out.println(Calculator2.add(7));
}
}
실행 결과
3
7
3
10
변화 이후
static 제거
class Calculator {
int result = 0;
int add(int num) {
result += num;
return result;
}
}
public class Sample {
public static void main(String[] args) {
Calculator cal1 = new Calculator(); // 계산기1 객체를 생성한다.
Calculator cal2 = new Calculator(); // 계산기2 객체를 생성한다.
System.out.println(cal1.add(3));
System.out.println(cal1.add(4));
System.out.println(cal2.add(3));
System.out.println(cal2.add(7));
}
}
빼기 추가
class Calculator {
int result = 0;
int add(int num) {
result += num;
return result;
}
int sub(int num) {
result -= num;
return result;
}
}
728x90
'Java > Mega' 카테고리의 다른 글
[보충] 객체 지향에 대한 이해 - 메소드(1) (0) | 2023.03.29 |
---|---|
[보충] 객체 지향에 대한 이해 - 클래스 (0) | 2023.03.29 |
Day11-1. 다차원 배열과 가변 배열 (0) | 2023.03.29 |
Day11. 메소드 함수 호출 궁금증 해결 (0) | 2023.03.28 |
정방향 / 역방향 배열 배치 방법 두가지 (0) | 2023.03.28 |
Comments