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 |