[Java] 클래스(Class)

hyun-jin·2022년 8월 22일
0

Java

목록 보기
8/14

클래스(Class)

  • 객체의 설계도 역할을 하는 프로그램 소스
  • 연관되어 있는 변수와 메소드의 집합니다.
  • 공장에서 하나의 설계도를 사용하여 여러 개의 제품을 생산할 수 있는 것처럼 하나의 클래스를 통해 동일한 구조를 갖는 객체를 여러개 생성할 수 있다.

✔ 객체(Object)

  • 프로그램에서 표현(구현)하고자 하는 기능을 묶기 위한 단위이다.
  • 클래스에 선언된 모양 그대로 생성된 실체이다.
  • ‘클래스의 인스턴스(instance)’ 라고도 부른다.

1) 클래스의 기본 작성 방법

class 클래스이름{
		멤버변수;
    	void 메서드이름( ) {...}
    }
  • 멤버변수는 여러개 존재할 수 있고 변수의 값 선언을 동시에 할당할 수도 있다. 그 값을 객체를 통해 간접적으로 할당할 수도 있다.
  • 메소드 또한 여러 개가 존재할 수 있다.

✔ 클래스 안에 포함된 멤버변수와 메소드의 특성에 따라 그룹화 하기 위한 기법이 클래스를 작성하는 것이라 이해할 수 있다.

2) 객체의 생성 방법

  • 객체의 선언
    -> 클래스이름 객체이름;

    class Calc{		// Calc 클래스
          ...
     	 }  
     public class Main{		// Main 클래스
     	public static void main(String[] args){    	 
             Calc c1; // <- 객체의 선언
    	}
  • 객체의 할당
    -> 객체이름 = new 클래스이름( );

     c2 = new Calc();
  • 선언과 할당의 통합
    -> 클래스이름 객체이름 = new 클래스이름( );

     Calc c3 = new Calc();

    3) 객체의 사용

  • 객체 안에 포함된 변수나 메소드는 점(.)으로 연결하여 접근한다.

    class Calc{
     	 int max; 
          public static void plus(){      	
          	...
          }
           public static void minus(){
           	...
          }
          public static void multiply(int x, int y){
          	...
          }
          public static void divide(int x, int y){
          	...
          }      
      }
      public class Main{
     	 public static void main(String[] args){
            Calc c = new Calc();	// 선언과 할당
  • 객체 안에 포함된 메소드를 호출하는 경우
    -> 객체이름. 메소드이름( );

           c.plus();   
           c.minus();
  • 객체안에 포함된 변수의 값을 다른 변수에 복사하는 경우
    -> 변수 = 객체이름.멤버변수;

           int num = c.max;   
  • 객체안에 포함된 변수의 값에 다른 값을 대입하는 경우
    -> 객체이름.멤버변수 = 값;

           c.max = 200; 
  • 객체 안에 포함된 메소드에 파라미터를 전달하는 경우
    -> 객체이름. 메소드이름(값1, 값2, ...);

       	c.multiply(10, 20); 
           c.multiply(30, 40);  
        }
     }
✔ 같은 클래스를 통하여 생성된 객체라 할지라도 서로 다른 값을 대입하면 서로 독립적인 형태로 존재하게 된다.
✔ 클래스 작성시에는 멤버변수에 값을 일반적으로 지정하지 않는다.

4) 메소드만 포함하는 클래스

  • 객체안에 멤버변수가 포함되지 않고 메소드만 포함되어있는 클래스
  • 객체안에 포함된 메소드를 호출하여 결과를 만들기 이한 목적으모로, 궅이 여러 개의 샛체를 생성할 필요가 없다.

5) this

  • this는 자기 자신을 의미하는 키워드이며 클래스 안에서 this를 사용해서 "자기자신"을 표현한다.

6) 멤버변수(전역변수) / 지역변수

  • 멤버변수는 Class 내에 선언되는 변수를 뜻한다.
  • 지역변수는 Medthod내에서 선언되고 존재하는 변수이다.
class User{
		String name;			//전역변수
        public void setName( ) {
        		String name;	// 지역변수
                name = "자용자";
                this.name = "김학생";
               }
           }
-> 전역변수와 지역변수가 동일한 이름으로 공존할 경우, 유효성의 범위가 작은 변수가 우선적으로 인식된다.
class User{
		String name;			//전역변수
        public void setName( ) {
                this.name = name;
               }
           }
-> 파라미터도 해당 메소드 안에서만 유효한 지역변수의 일종이다.
-> 모든 멤버변수 앞에는 this 키워드를 사용하여 멤버변수임을 직관적으로 표시하는 것이 소스코드의 가독성을 위해서 바람직하다.

7) 메소드를 의미하는 용도로서의 this

class User{
		public String getName( ){
			String name = "김학생";
			retrun name;
		}
		public void sayName( ){
			String myname = this.getName( );
			System.out.println(myname);
		}
	}
-> getName( )을 호출하는 메소드는 this키워드를 사용하여 현재 클래스 안에 포함된 다른 메소드임을 명시하고 있다.
-> 하지만 메소드의 경우 다른 클래스의 메소드를 이름만으로 호출할 수 있는 방법이 없기 때문에, this.getName( )가 아닌, getName( )만 사용하더라도 코드 가독성의 문제는 없기때문에 잘 사용하지 않는다.

0개의 댓글