객체지향 언어
1. 코드의 재사용성이 높다
- 새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다.
2. 코드의 관리가 용이하다.
- 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다.
3. 신뢰성이 높은 프로그래밍을 가능하게 한다.
- 제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여
코드의 불일치로 인한 오작동을 방지할 수 있다.
객체지향 언어의 특징
- 캡술화
- 상속
- 추상화
- 다형성
클래스와 객체
- 클래스 : 객체를 정의해 놓은 것
- 클래스의 용도 : 객체를 생성하는데 사용
- 객체 : 실제로 존재하는 사물 또는 개념
- 객체의 용도 : 객체가 가지고 있는 기능과 속성에 따라 다름.
객체의 생성과 사용
- 클래스명 변수명; // 클래스의 객체를 참조하기 위한 참조변수를 선언
- 변수명 = new 클래스명(); // 객체를 생성 후, 객체의 주소를 참조변수에 저장
class Ex6_1 {
public static void main(String args[]) {
Tv t; // Tv인스턴스를 참조하기 위한 변수 t를 선언
t = new Tv(); // Tv인스턴스를 생성한다.
t.channel = 7; // Tv인스턴스의 멤버변수 channel의 값을 7로 한다.
t.channelDown(); // Tv인스턴스의 메서드 channelDown()을 호출한다.
System.out.println("현재 채널은 " + t.channel + " 입니다.");
}
}
class Tv {
// Tv의 속성(멤버변수)
String color; // 색상
boolean power; // 전원상태(on/off)
int channel; // 채널
// Tv의 기능(메서드)
void power() { power = !power; } // TV를 켜거나 끄는 기능을 하는 메서드
void channelUp() { ++channel; } // TV의 채널을 높이는 기능을 하는 메서드
void channelDown() { --channel; } // TV의 채널을 낮추는 기능을 하는 메서드
}
클래스의 정의

- 변수 : 하나의 데이터를 저장할 수 있는 공간
- 배열 : 같은 종류의 데이터를 하나로 저장할 수 있는 공간
- 구조체 : 서로 관련된 여러 데이터를 하나로 저장할 수 있는 공간
- 클래스 : 데이터와 함수의 결합(구조체 + 함수)
선언위치에 따른 변수의 종류
class Variables{
int iv; // 인스턴스 변수
static int cv; // 클래스 변수
void method(){
int lv = 0; // 지역 변수
}
}

메서드란?
- 작업을 수행하기 위한 명령문의 집합
- 어떤 값을 입력받아서 처리하고 그 결과를 돌려준다. (입력받는 값이 없을 수도 있고 결과를 돌려주지 않을 수도 있다.)
class Ex6_4 {
public static void main(String args[]) {
// MyMath 객체 생성
MyMath mm = new MyMath();
// MyMath 객체 사용(객체의 메서드 호출)
long result1 = mm.add(5L, 3L);
long result2 = mm.subtract(5L, 3L);
long result3 = mm.multiply(5L, 3L);
double result4 = mm.divide(5L, 3L);
System.out.println("add(5L, 3L) = " + result1);
System.out.println("subtract(5L, 3L) = " + result2);
System.out.println("multiply(5L, 3L) = " + result3);
System.out.println("divide(5L, 3L) = " + result4);
}
}
// MyMath 클래스 작성(메서드 작성)
class MyMath {
long add(long a, long b) {
long result = a + b;
return result;
}
long subtract(long a, long b) { return a - b; }
long multiply(long a, long b) { return a * b; }
double divide(double a, double b) {
return a / b;
}
}
호출스택
- 메서드 수행에 필요한 메모리가 제공되는 공간
- 메서드가 호출되면 호출스택에 메모리 할당, 종료되면 해제
class CallStackTest {
public static void main(String[] args) {
firstMethod();
}
static void firstMethod() {
secondMethod();
}
static void secondMethod() {
System.out.println("secondMethod()");
}
}

- 메서드가 호출되면 수행에 필요한 만큼의 메모리를 스택에 할당받는다.
- 메서드가 수행을 마치고나면 사용했던 메모리를 반환하고 스택에서 제거된다.
- 호출스택의 제일 위에 있는 메서드가 현재 실행중인 메서드이다.
- 아래에 있는 메서드가 바로 위의 메서드를 호출한 메서드이다.
'Java' 카테고리의 다른 글
| 컬렉션 프레임워크II (0) | 2023.03.27 |
|---|---|
| Collections Framework (0) | 2023.03.08 |
| 객체지향 프로그래밍 IV (0) | 2023.02.22 |
| 객체지향 프로그래밍 III (0) | 2023.02.09 |
| 객체지향 프로그래밍II (0) | 2023.01.25 |
