java study

#17 객체 지향 언어(OOP) 2

MonkeyonMars 2022. 6. 7. 20:44

※ 시작하기 앞서  java study 카테고리 자료는 YOUTUBE에 남궁성 강사님의 자바의 정석 영상을 가지고
    공부한 내용을 정리한 것이며 상업적 목적은 전혀 없음을 알립니다.

 

 

객체 배열 

 

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

 

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

 

Tv [] tvArr = new Tv [3];   // 길이가 3인 Tv타입의 참조 변수 배열

 

// 객체를 생성해서 배열의 각 요소에 저장

tvArr [0] = new Tv();

tvArr [1] = new Tv();

tvArr [2] = new Tv();

 

Tv [] tvArr = {new Tv(), new Tv(), new Tv()}; // 위 문장을 이렇게 간단하게 쓸 수 있다.

 

 

객체 배열

 

클래스의 정의 

 

클래스

1. 설계도

2. 데이터 + 함수

3. 사용자의 정의 타입

 

클래스 == 데이터 + 함수 

 

변수 , 배열 , 구조체

 

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

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

3. 구조체      서로 관련된 여러 데이터(종류 관계 x)를 하나로 저장할 수 있는 공간

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

 

클래스 

사용자 정의 타입 - 원하는 타입을 직접 만들 수 있다.

 

아래 그림처럼 서로 다른 변수를 묶어 클래스로 정의하면 객체지향적 언어로 간결하게 적을 수 있다.

 

 

 

 

 

참조변수 t의 저장 공간
 

 

class Time {						// 세개의 변수를 묶어서 Time이란 클래스를 정의
	int hour;
	int minute;
	int second;
}

Time t = new Time();				// 객체를 생성

Time t1 = new Time();				// 참조변수에 Time객체 주소를 저장
Time t2 = new Time();
Time t3 = new Time();

Time[] t = new Time[3];				// 객체 배열로 바꿔줄수 있다.
t[0] = new Time();
t[1] = new Time();
t[2] = new Time();

 

선언 위치에 따른 변수의 종류 

 

class Variables 

클래스 영역 - iv , cv(static + iv) 

                      선언문만 가능 System.out.println();같은 일반 문장은 못 들어간다.

                      iv는 객체를 생성했을 때 만들어진다.  객체 = iv를 묶어 놓은 것

                      cv는 객체 생성을 안 해도 된다.

 

메서드 영역 - lv(지역변수)

                      메서드 종료 시 자동 제거

                      

 

클래스 변수 인스턴스 변수

 

iv (인스턴스 변수)  -  개별적인 변수는 iv

 

cv (클래스 변수)    -   공통적인 변수는 cv

 

class Card {
		String kind;	// 무늬
		int number;	// 숫자

		static int width = 100;  // 폭
        	static int height = 200; // 높이
}

// 객체 사용

Card c = new Card();		//객체 생성

c.kind = "heart";		//iv
c.number = 5;
Card.width = 200;		//cv  
Card.height = 300;		//참조변수를 쓰는것도 가능은 하지만 클래스 이름을 붙이는걸 선호한다.

 

▶참고자료  https://youtu.be/oJlCC1DutbA