1. 클래스와 객체
- 클래스의 정의 : 객체를 정의해 놓은 것
- 클래스의 용도 : 객체를 생성하는데 사용
- 객체의 정의 : 실제로 존재하는 것 (사물 또는 개념)
- 객체의 용도 : 객체의 속성과 기능에 따라 다름
- 클래스를 정의하고 클래스를 통해 객체를 생성하는 이유는 설계도를 통해서 제품을 만드는 이유와 같다.
- 하나의 설계도만 잘 만들어 놓으면 제품을 만드는 일이 쉬워지는 것과 같기 떄문이다.
- JDK에서는 많은 수의 유용한 클래스(API)를 기본적으로 제공하고 있다.
2. 객체와 인스턴스
- 객체는 인스턴스를 포함하는 일반적인 의미
- 인스턴스화 : 클래스로부터 인스턴스를 생성하는 것
- 클래스 > 인스턴스화 > 인스턴스(객체)
3. 객체의 구성요소
- 객체는 다수의 속성과 다수의 기능 두 종류의 구성요소로 이루어진다.
- 객체는 속성과 기능의 집합이며, 속성과 기능을 객체의 멤버라고 한다.
- 속성(Property) : 멤버변수(member variable), 특성(attribute), 필드(field), 상태(state)
- 기능(function) : 메서드(method), 행위(behavior), 함수(function)
4. 인스턴스의 생성
- 클래스명 참조변수명 = new 클래스명();
- 클래스의 객체를 참조하기 위한 참조변수를 선언하고 객체를 생성 후, 객체의 주소를 참조변수에 저장한다.
- 인스턴스 초기화 : 인스턴스 변수에 적절한 값을 저장하는 것이다.
5. 생성자(Constructor)
- 클래스이름(타입 변수명, 타입 변수명) { // 인스턴스 생성시 수행될 코드 }
- 인스턴스가 생성될 때마다 호출되는 '인스턴스 초기화 메소드' 이다.
- 인스턴스 변수의 초기화 또는 인스턴스 생성시 수행할 작업에 사용한다.
- 몇가지 조건을 제외하고는 메서드와 같다.
- 모든 클래스에는 반드시 하나 이상의 생성자가 있어야 한다.
- 생성자의 이름은 클래스의 이름과 같아야 한다.
- 생성자는 리턴값이 없다. void도 쓰지 않는다.
- 기본 생성자(default constructor) : 매개변수가 없는 생성자, 클래스에 생성자가 하나도 없으면 컴파일러가 기본 생성자를 추가한다.
- 매개변수가 있는 생성자 : 인스턴스마다 각기 다른 값으로 초기화되어야하는 경우가 많기 때문에 매개변수를 사용한 초기화는 매우 유용하다.
// 생성자를 사용하지 않은 예제
package
com.tistory.gangzzang;
class
Human {
String name;
String gender;
int
age;
void
eat(String some) {
System.out.println(age +
"살 "
+ name +
"이(가) "
+ some +
"을(를) 먹는 중"
);
}
// eat : 먹는 메소드
void
sleep() {
System.out.println(age +
"살 "
+ name +
"이(가) 자는 중"
);
}
// sleep : 자는 메소드
}
// Human 클래스
class
HumanTest {
public
static
void
main(String[] args) {
Human human =
new
Human();
// 클래스명 참조변수명 = new 클래스명();
human.name =
"갱짱"
;
human.gender =
"남자"
;
human.age =
25
;
human.eat(
"과자"
);
// 객체 사용방법 : 참조변수명.메소드명(인자값이 있다면 인자값);
human.sleep();
}
// main
}
// HumanTest 클래스
// 생성자 사용한 예제
class
Human2 {
private
String name;
private
String gender;
private
int
age;
Human2(String name, String gender,
int
age) {
this
.name = name;
this
.gender = gender;
this
.age = age;
}
// Human 생성자
Human2(String name) {
this
.name = name;
}
void
eat(String some) {
System.out.println(age +
"살 "
+ name +
"이(가)"
+ some +
"을(를) 먹는 중"
);
}
// eat : 먹는 메소드
void
sleep() {
System.out.println(age +
"살 "
+ name +
"이(가) 자는 중"
);
}
// sleep : 자는 메소드
}
// Human 클래스
class
HumanTest2 {
public
static
void
main(String[] args) {
// 객체를 생성함과 동시에 자동으로 수행되어 맴버변수들의 값을 특정한 값으로 초기화 > 생성자
Human2 human1 =
new
Human2(
"갱짱"
,
"남자"
,
25
);
Human2 human2 =
new
Human2(
"이갱짱"
);
human1.eat(
"껌"
);
human2.eat(
"커피"
);
}
// main
}
// HumanTest2 클래스
'Program > JAVA' 카테고리의 다른 글
[JAVA] 생성자 (0) | 2020.03.02 |
---|---|
[JAVA] Servlet :: Servlet(서블릿) 이란? (0) | 2016.12.07 |
[JAVA]객체와 인스턴스의 차이점 (0) | 2016.03.08 |
[JAVA] 재귀 기초 - Factorial (0) | 2015.11.30 |
상속(extends), 추상 클래스(abstract), 인터페이스(implement) 정리 (0) | 2015.09.14 |