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 클래스


'Java > Java SE' 카테고리의 다른 글

Java 변수(variable)  (4) 2013.07.31
Java this(), this  (0) 2013.07.31
객체지향 프로그래밍 (Object-oriented Programming)  (0) 2013.07.29
JAVA 반복문 - for, while, do-while  (0) 2013.07.26
JAVA 조건문 - if, switch  (0) 2013.07.23

+ Recent posts