13. 객체와 클래스

강태석·2022년 8월 15일
0

Java 기초

목록 보기
13/24

객체 (Object)

  • 프로그램에서 표현하고자 하는 기능을 묶기 위한 단위

객체 지향 프로그래밍

Java는 객체 지향 프로그래밍이다.

객체의 생성 방법

  • 객체의 선언
    클래스이름 객체이름;
Student student;
  • 객체의 할당
    객체이름 = new 클래스이름();
student = new Student();
  • 선언과 할당 일괄처리
    클래스이름 객체이름 = new 클래스이름();
Student student = new Student();

객체의 사용

  • 객체 안에 포함된 변수나 메서드는 점(.)으로 연결하여 접근한다.
  • 객체안에 포함된 변수의 값을 다른 변수에 복사하는 경우
    변수 = 객체이름.멤버변수;
  • 객체안에 포함된 변수의 값에 다른 값을 대입하는 경우
    객체이름.멤버변수 = 값;
  • 객체 안에 포함된 메서드를 호출하는 경우
    객체이름.메서드이름();
  • 객체 안에 포함된 메서드에 파라미터를 전달하는 경우
    객체이름.메서드이름(값1, 값2, ...);

클래스 (Class)

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

변수와 메서드를 포함하는 클래스
두개 이상의 메서드가 서로 동일한 대상을 위해서 존재 할 경우,
이 메서드들을 클래스에 포함시켜 그룹화 할 수 있다.

  • 클래스에 멤버변수와 메서드가 공존할 경우, 멤버변수는 모든 메서드가 공유하는 전역 변수로 존재하게 된다.
    메서드만을 포함하는 클래스
  • 객체안에 멤버변수(=데이터)가 포함되지 않는다.
  • 객체안에 포함된 메서드를 호출하여 결과를 만들기 위한 목적이므로, 굳이 여러 개의
    객체를 생성할 필요가 없다.

this

  • 자기 자신을 의미하는 키워드
    • 클래스 안에서 this를 사용하여 "자기자신"을 표현한다.
class User{
	String name;		// 멤버변수 (전역변수)
	public void setName(){
		String name;	// 지역변수
		name = "사용자";
		this.name = "자바학생";
	}
}

class Student{
	String name;	// 전역변수
	public void setName( String name ){
		this.name = name;
	}
}	

현재 클래스의 메서드를 의미하는 용도로서의 this

class User{
	public String getName(){
		String name = "자바학생";
		return name;
	}		
	public void sayName(){
		String myname = this.getName();
		System.out.println(myname);
	}
}

클래스와 객체의 관계
위 그림에서 설계도는 클래스
제품A ,제품B, 제품C는 객체라고 할 수 있다.
좀더 쉬운 설명을 위해 예를 들자면, 붕어빵 가게를 예로 들 수 있다.
붕어빵 가게에서 붕어빵을 만드는 틀클래스라 볼 수 있고
그 틀을 이용해 만들어지는 여러가지의 붕어빵들 (팥 붕어빵, 크림 붕어빵 등)
객체라고 볼 수 있다.

생성자

  • 생성자란?
    • new 키워드를 사용하여 객체개 생성될 때 자동으로 실행되는 특수한 형태의 메서드
    • 리턴형을 명시하지 않으며, 메서드의 이름은 클래스와 동일하다.
User user = new User();
class User{
	User(){
		// 이 안은 객체가 생성될 때 자동으로 호출된다.
	}
}
  • 자동으로 실행된다는 특성 때문에, 객체가 생성되면서 해당 객체의 특성을 초기화 하기 위하여 사용된다. (ex:멤버변수의 초기값을 할당하는 용도)

    기본 생성자

    • 파라미터가 없는 생성자
    • 클래스에 특별히 생성자가 정의되지 않은 경우, Java컴파일러가
      기본생성자가 존재한다고 인식한다.
      User u = new User();
      class User{
      	User(){
      		// 생성자는 있지만, 내용은 비어있다.
      	}
      }
      파라미터를 갖는 생성자
    • 생성자도 메서드의 한 종류이므로 파라미터를 함께 정의하는 것이 가능하다.
    • 생성자의 파라미터를 멤버변수에 복사하는 것으로 객체의 초기화를 외부적인 요인에
      의해 처리할 수 있다.

0개의 댓글