본문 바로가기

Java/개념정리

객체지향개념(1)_클래스, 변수, 메서드, 생성자

1. 특징

  • 재사용성
  • 유지보수
  • 중복제거

2. 클래스와 객체

클래스 : 객체를 정의해 놓은 것, 데이터와 함수의 결합

객체 : 실제로 존재하는 것, 사물 또는 개념, 객체는 서로 독립적임

 

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

변수의 선언위치가 변수의 종류와 범위를 결정한다.

변수의 종류 선언위치 생성시기
클래스변수 클래스영역 클래스가 메모리에 올라갈 떄
인스턴스변수 인스턴스 생성시
지역변수 메서드 영역 변수 선언문 수행시

 

  • 인스턴스 변수(멤버변수)
    • 각 인스턴스의 개별적인 저장곤간
    • 인스턴스 생성후, 참조변수.인스턴스변수명으로 접근
    • 인스턴스를 생성할 때 생성되고, 참조변수가 없을 때 GC에 의해 제거
    • 선언시 기본값으로 초기화(인스턴스가 생성될 때)
  • 클래스 변수(멤버변수)
    • 같은 클래스의 모든 인스턴스들이 공유하는 변수
    • 인스턴스 생성없이 클래스이름.클래스변수명으로 접근
    • 클래스가 로딩될 때 생성되고 프로그램이 종료될 때 소멸
    • 선언시 기본값으로 초기화(클래스가 처음 로딩될 때 단 한번)
  • 지역 변수
    • 메서드 내에 선언되며, 메서드 종료와 함께 소멸
    • 조건문, 반복문 내에 선언된 지역변수는 블럭을 벗어나면 소멸
    • 초기화 필수

 

기본형 매개변수와 참조형 매개변수

기본형 매개변수 : 변수의 값을 읽기만 할 수 있다.

참조형 매개변수 : 변수의 값을 읽고 변경할 수 있다.

Data d = new Data();
d.x = 10;
change(d.x);

static void change(int x){
	x=1000; // 기본형 매개변수(지역변수로 쓰이고 사라진다.)
    d.x=100; // 참조형 매개변수
}

 

4. 클래스 메서드(static 메서드) 와 인스턴스 메서드

  • 인스턴스 메서드
    • 인스턴스 생성 후, 참조변수.메서드이름()으로 호출
    • 인스턴스 변수나 인스턴스 메서드와 관련된 작업을 하는 메서드
    • 메서드 내에서 인스턴스 변수 사용가능
  • 클래스 메서드
    • 객체생성없이 클래스이름.메서드이름()으로 호출
    • 메서드 내에서 인스턴스 변수 사용불가
    • 메서드 내에서 인스턴스 변수를 사용하지 않으면 static을 붙이는 것을 고려

5. 메서드 오버로딩

하나의 클래스에 같은 이름의 메서드를 여러 개 정의하는 것을 메서드 오버로딩이라고 한다.

 

조건

  • 메서드의 이름이 같아야 한다.
  • 매개변수의 개수 또는 타입이 달라야 한다.
  • 매개변수는 같고 리턴타입이 다른 경우는 오버로딩 성립이 되지 않는다.

예시

println : 다양하게 오버로딩된 메서드를 제공해, 모든 변수를 출력할 수 있다.

 

6. 생성자

  • 인스턴스가 생성될 때마다 호출되는 인스턴스 초기화 메서드
  • 인스턴스 변수의 초기화 또는 인스턴스 생성 시 수행할 작업에 사용
  • 모든 클래스에는 반드시 하나 이상의 생성자가 있어야 한다.
  • 클래스에 생성자가 하나도 없으면 컴파일러가 기본 생성자를 추가한다.
    • 생성자가 하나라도 있으면 컴파일러는 기본 생성자를 추가하지 않는다.
  • this() 생성자, 같은 클래스의 다른 생성자를 호출할 때 사용
    • 다른 생성자 호출은 생성자의 첫 문장에서만 가능하다. (중복방지)

[자바의 정석] 6장