클래스
1. 클래스의 정의
클래스란 객체를 정의해 놓은 것을 의미한다.
2. 클래스의 용도
클래스는 객체를 생성하는데 사용된다.
3. 클래스 생성
[클래스 생성 예]
class 클래스명 {
멤버변수
..
..
메소드
..
}
class 뒤에 클래스명을 적은 후, 괄호안에 멤버변수와 메소드를 이용해 객체를 구현하면 된다.
인스턴스
1. 인스턴스의 정의
클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화 라고 하며, 특정 클래스로부터 만들어진 객체를 그 클래스의 인스턴스 라고 한다.
[인스턴스화]
클래스 ⟶ 인스턴스(객체)
즉, 인스턴스는 객체와 동의어이며 상황에 따라 명칭이 바뀔 뿐이다.
2. 객체의 구성요소
객체는 다수의 속성과 기능으로 이루어져있다.
예를들면 아래와 같은 속성과 기능으로 이루어진 [문자열]이라는 객체가 존재 할 수 있다.
속성 | 길이, 크기 등 |
기능 | 정렬, 복사, 비교, 검색 등 |
※ 프로그래밍에서는 속성은 멤버변수(member variable)로, 기능은 메서드(method)로 불린다.
3. 인스턴스 생성
인스턴트는 new 연산자를 이용해 생성할 수 있으며, 생성된 인스턴트의 주소를 동일한 클래스 타입의 참조변수에 넣는 것으로 인스턴스를 사용할 수 있다.
[인스턴스 생성 그 #1]
클래스 변수명;
변수명 = new 클래스();
혹은
클래스 변수명 = new 클래스();
[인스턴스 생성 그 #2]
String str;
str = new String();
혹은
String str = new String();
String이라는 클래스의 인스턴스를 생성해서 그 주소값을 String 타입의 참조변수 str에 넣는다.
※ 인스턴스가 생성되면 빈 메모리공간에 클래스에 정의된 멤버변수와 메서드가 생성된다. 이때 멤버변수는 각 타입의 기본값으로 초기화 된다.
4. 인스턴스의 멤버변수와 메소드 접근
[멤버 접근]
참조변수.멤버변수;
참조변수.메소드;
인스턴스의 주소값이 담겨있는 참조변수를 통해 인스턴스의 멤버변수와 메소드에 접근 할 수 있다.
인스턴스는 모두 동일한 클래스로 생성되기 때문에 생성된 각각의 인스턴스는 모두 동일한 메소드를 가지고있다.
하지만 생성된 각각의 인스턴스는 독립적이기 때문에 인스턴스의 멤버변수는 서로 다른 값을 유지 할 수 있다.
[Test 클래스 생성]
class Test{
int num;
int plus_one(int n) {
num = n + 1;
return num;
}
}
Test라는 클래스를 만든후 멤버변수로 정수타입의 num이라는 멤버 변수를 선언했다.
또한 정수 n + 1 값을 멤버 변수인 num에 넣고 반환하는 plus_one이라는 메소드를 정의 하였다.
[Test 클래스의 인스턴스 멤버변수와 메소드 사용]
public class Main {
public static void main(String[] args) {
Test first = new Test();
Test sec = new Test();
first.plus_one(5);
sec.plus_one(3);
System.out.println(first.num);
System.out.println(sec.num);
}
}
class Test{
int num;
int plus_one(int n) {
num = n + 1;
return num;
}
}
앞의 Test 클래스로 first와 sec라는 인스턴스를 생성하였다.
first와 sec는 같은 Test 클래스로 생성되었기 때문에 모두 plus_one이라는 메소드를 갖고있다.
때문에 각 인스턴스에 plus_one 메소드를 호출하여 5와 3의 값을 넣어주었고 first와 sec의 num값을 출력해보았다.
각 인스턴스(first, sec)의 num값을 출력한결과는 아래와 같다.
[first와 sec의 멤버변수 num 변경 결과]
6
4
생성된 인스턴스는 독립적이기 때문에 각각의 멤버변수는 서로 독립된 값을 갖는것을 확인 할 수 있다.
'JAVA > 기본' 카테고리의 다른 글
예외 처리(exception handling) (0) | 2021.08.02 |
---|---|
#5 생성자(Constructor) (0) | 2021.04.28 |
#4 오버로딩(overloading) (0) | 2021.04.28 |
#3 변수, 메서드 (0) | 2021.04.23 |
#1 객체 지향 프로그래밍 (0) | 2021.04.21 |
댓글