Back-end/Java Language

0. 자바의 정석 ch6(객체지향 프로그래밍)

prden 2021. 5. 6. 15:13

1. 객체와 인스턴스

 클래스를 인스턴스화 한 것이 인스턴스(객체)이다. 객체의 구성요소로는 속성과 기능이 있으며 여기서 속성이란 멤버 변수를 의미하고 기능이란 메서드(함수)를 의미한다. 

 

Ex).

Class Tv{
       String color;
       Boolean power;
   .....

      void power() {power =! power;} //껐다 켰다 true, false로 변경 가능
      void channelUp() 
.......

}

 

2. 인스턴스의 생성과 사용

Tv t1 = new Tv();

Tv t2 = new Tv();

t2=t1; //t1이 저장하고 있는 값(주소)을 t2에 저장하면서 참조 변수 t2가 가리키는 인스턴스는 가비지 컬렉터에 의해 자동적으로 메모리에서 제거된다. 

 t1. color = red; //참조 변수. 멤버 변수 이런 형태로 사용

 

3. 객체 배열 -> 이건 언제 쓸까????

Tv [] tvArr = new Tv [3]; //참조 변수 배열(객체 배열)을 생성

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

tvArr [0] = new Tv();

tvArr [1] = newTv();

tvArr [2] = newTv();

 

4. 변수와 메서드

1. 변수(클래스 변수, 인스턴스 변수, 지역변수 - 변수의 선언된 위치에 따라)

  • -멤버 변수 (클래스 영역에 존재) 중

   1) static이 붙으면 클래스 변수 =

   인스턴스들이 공통적인 값을 유지해야 하는 속성의 경우 클래스 변수로 선언, '클래스 이름. 클래스 변수' 같은 형태로 사용됨.

   2) static이 붙지 않으면 인스턴스 변수 

   -> 맴버변수(클래스, 인스턴스변수) 는 클래스 영역에만 선언 가능하고, 클래스 전체 영역에서 사용된다. 

  • 지역변수 = 메서드 영역 내에 존재

  

Ex)

Class Variables {

    int iv; (인스턴스 변수)
    static int cv; //클래스 변수(static 변수, 공유 변수)


   void method()
   {
         int lv =0; //지역변수
   }

}

 

2. 메서드

int add(int a, int b)
{
	int result = a+b;
    	return result;
        }
       

메서드에 선언되는 매개변수의 타입은 생략될 수 없고 매개변수도 메서드 내에 선언된 것으로 간주되기 때문에 지역변수이다. 

 

*인자(argument)와 매개변수(parameter)

public static void main(String args[])
{
	...
    int result = add(3,5); // 여기서 3, 5 인자
    }
  
  int add(int x, int y){ 	// x,y가 매개변수
  	int result = x+y;
    return result;
    }
    

 

3. 매개변수의 유효성 검사

메서드의 구현부를 작성할 때 제일먼저 해야할 일은 매개변수의 값이 적절한지 확인하는 것

예를 들어

float divide(int x, int y){
 	//	작업을 하기 전에 나누는 수(y)가 0인지 확인해야
    if(y==0){
    System.out.println("0으로 나눌 수 없습니다.")
    return 0;
    }
    return x/ (float)y;
  }