우와한 개발자

[Java] 객체와 클래스 - 객체/인스턴스/클래스, 객체 추상화, 멤버 변수/메서드,

by 우와한개발자

1. 객체와 클래스 정의

  • 클래스 : 객체를 만들기 위한 틀 (blueprint, template)
  • 객체 : 클래스의 인스턴스(인스턴스 중에서 하나를 콕 찝은거라고 생각하면 됨)
  • 객체의 명사적 특성 : 데이터(Data), 변수(Variable), 필드(Field), 속성(Attribute)
  • 객체의 동사적 특성 : 행위(Behavior), 메서드(Method), 기능(Operation)
  • 속성은 행위에 영향을 준다.

 

2. 객체의 추상화

  • 객체 추상화 : 실 객체를 클래스로 만드는 과정으로, 실세계의 객체에서 명사적 특징(속성)과 동사적특징(기능)을 추출하는 것
  • 인스턴스화 : 클래스를 이용해 인스턴스를 만드는 것
  • 객체 생성 : new 키워드 이용
  • 참조변수 : 객체의 주소(참조값)를 저장하는 변수
  • 객체의 멤버변수와 멤버메서드는 점(.)으로 구분하여 사용

 

3. 클래스 선언과 인스턴스 생성

1) 클래스 선언

[modifiers] class ClassName	{
	멤버변수 선언  // 객체의 정보를 저장
	생성자 선언    // 객체 생성시 멤버변수 초기화
	메서드 선언    // 객체의 동작을 정의
}
  • modifiers : 제한자
    • Access Level 제한자 : public, protected, package friendly(공백), private
    • Usage Level 제한자 : static, final, abstract
    • 클래스 이름 앞에 public이 붇으면 반드시 파일 이름과 일치해아함.
    • 하나의 파일에는 하나 이하의 public 클래스만 존재할 수 있음.

2) 인스턴스 생성

  • 선언된 클래스를 가지고 new 키워드(메모리 할당 연산자)를 통해 만들어진 실체
  • stack메모리에 heap에 저장된 인스턴스의 주소 저장.
  • JVM에서 주소값을 직접 참조할 수 없도록 막아둠.

Access Level 제한자 (접근제한자)

  • public: 같은 패키지(package)가 아니어도 어느 클래스에서나 참조가능
  • protected: 같은 패키지 내의 모든 클래스, 상속 관계가 있는 하위 클래스에서 참조가능
  • package friendly: 같은 패키지 내의 클래스에서만 참조가능
  • private: 같은 클래스 내에서만 참조가능

 

4. 멤버변수

1) 멤버변수 선언

[modifiers] datatype variableName;
  • modifiers : 제한자
    • Access Level 제한자 : public, protected, package friendly(공백), private
    • Usage Level 제한자 : static, final
  • 멤버 변수는 일반적으로 전부 private 으로 사용
  • datatype: 기본자료형뿐만 아니라 배열과 클래스도 자료형으로 사용가능

 

5. 멤버 메서드

1) 메서드 선언

[modifiers] return_type methodName(parameter_list) {
	...
}
  • modifiers : 제한자
    • Access Level 제한자 : public, protected, package friendly(공백), private
    • Usage Level 제한자 : static, final, abstract
  • return_type: 외부로 값을 반환
    • void(반환 값이 없음)
    • 기본타입 : byte, short, int, long, float, double, char, boolean
    • 참조타입: 배열과 클래스 타입 등
  • parameter_list: 외부로부터 값을 전달받는 데 사용되는 매개변수
  • 메서드를 사용할때는 매개변수의 타입, 개수, 순서를 일치해야 호출 가능

 

6. 클래스 변수와 인스턴스 변수

  • 클래스 변수(정적 변수 / static 변수) : 객체 생성 없이 클래스 이름만으로 참조 가능한 static 붙은 변수
  • 인스턴스 변수 : 반드시 객체(인스턴스)를 생성한 후 참조가능한 static 붙지 않은 변수

블로그의 정보

우와한개발자 님의 블로그

우와한개발자

활동하기