본문 바로가기

프로그래밍/Java

[Java]클래스와 객체

클래스란

 객체의 속성과 기능을 정의해놓은 객체의 설계도, 틀이라 할 수 있다.

 클래스라는 설계도, 틀을 통해 객체를 생성할 수 있으며 객체는 클래스에 정의된 대로 생성된다.

 

 쉽게 설명하기 위해 클래스를 붕어빵의 틀에, 객체를 붕어빵에 비유하여 설명하기도 한다.

붕어빵의 크기와 생김새를 정의한 틀(클래스)에다 밀가루 반죽(속성)을 넣어 붕어빵의 재료(속성)를 팥으로 할지, 슈크림으로 할지 정하여 붕어빵이라는 객체를 생성해 낼 수 있다.

객체(인스턴스)란

 사전적인 정의로 실제 존재하는 것이다. 쉽게 말해 우리가 주변에서 볼 수 있는 책상, 의자, 자동차 그리고 앞서 설명했던 붕어빵과 같은 것들이 곧 객체이다.

 

 객체는 속성과 기능으로 이루어져있다. 속성은 변수를 통해 정의할 수 있고, 기능은 메소드를 통해 구현한다.

강아지를 예로들면, 강아지의 '털의 색', '다리 길이', '성별' 등은 속성이라 하고 변수에 저장한다. '짖다', '꼬리를 흔든다' 등은 기능이라 하며 메소드로 구현한다.

 

 클래스(설계도)로 부터 객체를 만드는 과정을 인스턴스화라고 하며, 그렇게 만들어진 객체를 그 클래스의 인스턴스라한다. 인스턴스와 객체는 같은 의미이므로 인스턴스는 곧 객체를 뜻한다고 생각하면 된다.

 

객체의 생성

 붕어빵 틀을 통해 붕어빵을 만들 듯이 클래스를 통해 객체를 찍어낸다 했으니, 객체를 만들기 위해서는 먼저 클래스를 선언하고 생성해야 한다.

 

 클래스 선언 및 생성 방법

//방법 1

클래스명 변수명; // 클래스 변수 선언
변수명 = new 클래스명(); // new 연산자를 통해 클래스 생성

//ex) Car myCar;
      myCar = new Car();
//방법 2

클래스명 변수명 = new 클래스명(); //클래스의 선언과 생성을 동시에 한다.
						// 방법1을 한단계로 줄인 모습이다.
                
//ex) Car myCar = new Car();

 

 

클래스를 통한 객체 만들기 예제

class Tree { // 나무 클래스(나무 설계도)
	
	//나무의 속성 정의. ex) 사과나무, 사과, 100살
	String name;
	String fruit;
	int age;
	
	
	//나무의 기능(동작) 정의. ex) 나무가 흔들린다. 과일이 떨어진다를 출력할 수 있다.
	void move() {
		System.out.println("나무가 흔들린다.");
	}
	
	void down() {
		System.out.println("과일이 떨어진다.");
	}
	
}


public class Test {
	
	public static void main(String[] args) {
    
    //나무 클래스를 통해 사과나무와 배나무 객체를 만들어보자 !
    
    
    //사과나무 객체 만들기 (객체의 주소값을 저장 할 참조변수 이름 : tree1)
	//저장시킬 속성 -> 사과나무, 사과, 100
		Tree tree1 = new Tree(); // 사과나무가 될 tree1 객체 선언 및 생성
		tree1.name = "사과나무";
		tree1.fruit = "사과";
		tree1.age = 100;
		
		tree1.move(); // "나무가 흔들린다"동작을 출력하기 위해 move()메소드 호출
		tree1.down(); // "과일이 떨어진다" 동작을 출력하기 위해 down()메소드 호출
		
	//배나무 객체 만들기 (객체의 주소값을 저장 할 참조변수 이름 : tree2)
	//저장시킬 속성 -> 배나무, 배, 90
		Tree tree2 = new Tree(); // 배나무가 될 tree2 객체 선언 및 생성
		tree2.name = "배나무";
		tree2.fruit = "배";
		tree2.age = 90;
		
		tree2.move(); // "나무가 흔들린다"동작을 출력하기 위해 move()메소드 호출
		tree2.down(); // "과일이 떨어진다" 동작을 출력하기 위해 down()메소드 호출

		
	
	
	}

}

'프로그래밍 > Java' 카테고리의 다른 글

[Java]생성자  (0) 2021.03.24
[Java]객체 배열  (0) 2021.03.19
[Java]2차원 배열  (0) 2021.03.13
[Java] 향상된 for문  (0) 2021.03.12
[Java]배열  (0) 2021.03.11