코딩과 결혼합니다

230916 - 자바의 정석 chapter 06 (230p ~260p) 본문

2세/Java

230916 - 자바의 정석 chapter 06 (230p ~260p)

코딩러버 2023. 9. 16. 12:50
728x90

객체지향

  • 재사용성
  • 유지보수
  • 중복된 코드의 제거

 

클래스 : 객체를 정의해 놓은 것, 객체의 설계도 또는 틀

  • 인스턴스화 : 클래스로부터 객체를 만드는 과정
  • 인스턴스 : 어떤 클래스로 부터 만들어진 객체
  • 객체는 모든 인스턴스를 태표하는 포괄적인 의미 / 인스턴스는 어떤 클래스로부터 만들어진 것인지를 강조

 

객체 : 속성과 기능의 집합 

      - 클래스에는 객체의 모든 속성과 기능이 정의되어 있다.

  • 속성 = 멤버변수, 특성, 필드, 상태
  • 기능 = 메서드, 함수, 행위

 

인스턴스 생성과 사용

  1. 클래스명 변수명;
  2. 변수명 = new 클래스명();
  3. 참조변수.멤버변수 - 인스턴스의 멤버변수를 사용할 때
  4. 참조변수.메서드 - 메서드를 사용할 때

연산자 new에 의해 클래스의 인스턴스가 메모리의 빈 공간에 생성된다. ➡️ 대입연산자(=)에 의해서 생성된 객체의 주소값이 참조변수에 저장된다. ➡️ 참조변수를 통해 클래스의 인스턴스에 접근할 수 있다. 

 

📌인스턴스를 다루기 위해서는 참조변수가 반드시 필요하며 참조변수의 타입은 인스턴스의 타입과 일치해야 한다.

📌같은 클래스로부터 생성되었을지라도 각 인스턴스의 속성(멤버변수)은 서로 다른 값을 유지할 수 있으며,

     메서드의 내용은 모든 인스턴스에 대해 동일하다.

📌둘 이상의 참조변수가 하나의 인스턴스를 가리키는(참조하는) 것은 가능하나 참조변수로 여러개의 인스턴스를

     가리키는 것은 불가능하다.

 

 

객체 배열 : 참조변수들을 하나로 묶은 참조 변수 배열

Tv[] tvArr = new Tv[3];

객체 배열 안에는 객체의 주소가 저장된다.

객체 배열을 생성하는 것은 그저 객체를 다루기 위한 참조 변수들이 만들어진 것일 뿐, 객체 배열의 각 요소에 저장하는 것을 잊으면 안된다.

 


변수

  • 클래스변수 : static이 붙은 것 - 모든 인스턴스가 공통된 저장공간을 공유하게 된다. 인스턴스를 생성하지 않고도 바로 사용 할 수 있다. '클래스이름.클래스변수'와 같은 형식으로 사용한다. / public을 앞에 붙이면 '전역변수'의 성격을 가짐.
  • 인스턴스변수 
  • 지역변수 : 멤버변수를 제외한 나머지 변수들
종류 선언위치 생성시기
클래스변수 클래스 영역 클래스가 메모리에 올라갈 때
인스턴스변수 인스턴스가 생성되었을 때
지역변수 클래스 영역 이외의 영역
(메서드, 생성자, 초기화 블럭 내부)
변수 선언문이 수행되었을 때

 

메서드

  • 높은 재사용성 : 한번 만들어 놓은 메서드는 몇 번이고 호출 할 수 있고, 다른 프로그램에서도 사용이 가능하다.
  • 중복된 코드의 제거 : 반복되는 문장들을 묶어 하나의 메서드로 작성해 놓으면, 메서드를 호출하는 한 문장으로 대체할 수 있다.
  • 프로그램의 구조화 

📌메서드 = 선언부 + 구현부

  • 선언부 = 메서드의 이름, 매개변수 선언, 반환타입
  • 구현부 = {} 부분
    • return문 : 메서드의 반환값이 void가 아닌 경우 구현부 안에 return 반환값; 이 반드시 포함 되어야 한다. 이 값의 타입은 반환타입이 일치하거나 적어도 자동 형변환이 가능한 것이어야 한다.

📌메서드의 호출

  • 인자의 개수와 순서는 호출된 메서드에 선언된 매개변수와 일치해야 한다.
  • 인자의 타입은 매개변수의 타입과 일치하거나 자동 형변환이 가능한 것이어야 한다.