본문 바로가기
Develope_Web&App/01_Java & JavaFX

[Java의 정석] 객체 지향 1

by 스타트업_디벨로퍼 2021. 2. 3.

클래스 : 객체의 설계도 또는 틀이라고 정의함. 

- 정의 : 클래스란 객체를 정의해놓은 것이다. 
- 용도 : 클래스는 객체를 생성하는데 사용된다. 

 

객체의 정의 : 실제로 존재하는 것. 사물 또는 개념

객체의 

인스턴스 (객체와 유사) : 특정 클래스로부터 생성된 객체

 

 

package chap06;

class Tv {
	String color;
	boolean power;
	int channel;
	
	void power() {power != power;}
	void channelUp() {++channel;}
	void channelDown() {--channel;}
}

public class TvTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Tv t1 = new Tv();
		Tv t2 = new Tv();
		
		t1.channel = 7;
		t1.channelDown();
		System.out.println("현재 채널은 "+ t1.channel + " 입니다.");

		System.out.println("현재 채널은 "+ t2.channel + " 입니다.");
		
		t2 =t1;
		System.out.println("현재 채널은 "+ t2.channel + " 입니다.");
	}

}

 

이 자체로 설명이 어느정도 될듯 싶다. 
Tv라는 클래스에 속성 + 기능 ( 속성은 color, power, channel이고 기능은 power, channelup, channeldown 등이 있음.)

t1이라는 참조 변수는 Tv 객체를 가르키고 있 고, 
t1,t2가 생겼다가, 
나중에는 t2리모컨이 t1리모컨이 되면서, 같은 방향을 가르키고 있어서, 
결과는 6 0 6이 된다.

 

위처럼 하나의 인스턴스를 여러개의 참조변수가 가르키는 경우는 가능한데 
여러개의 인스턴스가 하나의 참조변수를 가르킬 수는 없다. 

 

객체 배열  == 참조변수 배열

-> 생각해보면 String[],int[]에는 익숙한데 Tv[]는 익숙하지 않다. 
단순 기본 변수인지, 참조변수인지 차의지 결국 int나 string도 설계도에 지나지 않다!!1 
결국 배열 자체도 숫자를 담아내느냐, string을 담아내느냐, 참조변수를 담아내느냐 차이다!

Tv tv1, tv2, tv3; <-> Tv[] tvArr = new Tv[3];

 

클래스의 또다른 정의

 

1) 설계도

2) 데이터 + 함수

3) 사용자 정의 타입

 

데이터 + 함수

1. 변수 : 하나의 데이터를 저장할 수 있 는 공간

2. 배열 : 같은 종류의 여러 데이터를 하나로 저장할 수 있는 공간

3. 구조체 : 서로 관련된 여러 데이터를 하나로 저장할 수 있는 공간

4. 클래스 : 데이터와 함수의 결함 (구조체+ 함수)

 

사용자 정의 타입

 

원하는 타입을 직접 만들 수 있다.

 

int hour;
int minute;
int second; 

// 3개이상 가거나, 이를 효율적으로 하기 위해 배열을 해도 문제다.
Time t  = new Time();


class Time{
	int hour;
    int minute;
    int second;
}

//3개의 변수를 하나로 묶어낼 수가 있다.

 

 

 

 

반응형