클래스 - accidentlywoo/java GitHub Wiki

클래스


  • 클래스의 선언부와 몸체로 나뉘고 몸체에는 클래스의 멤버가 선언됨

  • 클래스 멤버 구성 객체의 초기화를 담당하는 생성자(Constructor) 클래스가 가지는 속성을 정의하는 멤버 변수(Variable) 클래스가 가지는 데이터를 조작하고 변환하는 메서드(Method)

  • 접근 제한자(Access Modifier) : 접근 제한 시 사용되는 키워드로 생략이 가능함

  • 클래스(Class) : class라는 예약어로 선언하며 클래스명은 식별자 이름 규칙에 따라 명시함

  • 생성자(Constructor) : 클래스명과 이름이 같은 메서드로 클래스부터 객체를 생성할 때 사용함

  • 멤버 변수(Variable) : 클래스 속성을 정의하는 클래스의 멤버로서 변수명 앞에는 데이터 타입을 반드시 명시해야 함. 변수명은 식별자 이름 규칙에 따라 명시함

  • 메서드(Method) : 클래스가 가지는 데이터를 조작하고 변환하는 클래스의 멤버로서 메서드명 앞에는 반환되는 데이터 타입(Return_Type)을 반드시 명시하거나 반환되는 데이터가 없는 경우 void로 선언함. 메서드명은 식별자 이름 규칙에 따라 명시함

클래스 Modifier

  • 접근 권한 예약어 public, protected, private, (default)

  • 활용 방법 예약어 final, abstract, static, transient, volatile, synchronized, native

-> 클래스에 사용되는 Modifier : public(모든 클래스에서 접근 가능), final(자식 클래스를 가질 수 없는 클래스), abstract(객체 생성이 불가능한 추상클래스를 의미)

-> 접근 권한과 관련된 Midifier를 지정하지 않으면, 같은 패키지 내의 클래스에서만 접근 가능함. -> 서로 다른 패키지의 클래스에 접근하기 위해서는 public으로 지정해야 함

클래스의 UML(표준 모델링 언어)표기법

Unified Modeling Language

  • 소프트웨어 개념을 다이어그램으로 그리기 위해 사용하는 시각적 표기법 객체지향 프로그램을 시각화하고 시스템 사양이나 설계를 문서화 시스템을 구성하는 다양한 클래스들과 클래스들 사이의 관계를 그림으로 표현

Car /name, speed /setName(), setSpeed(), getSpeed()

객체 생성

자바의 변수 --> 기본형 변수 --> 참조형 변수 : 배열 객체나 일반 클래스의 객체를 처리할 때 사용

클래스로부터 객체를 생성하고 사용하기 위해서는? int[] scoreList; : 객체 참조 변수의 선언 -> scoreList = new int[5]; : 객체 생성 및 주소값 할당

  • 특정 클래스 유형의 객체 참조 변수 선언

  • 특정 클래스 유향의 객체 참조 변수 선언 클래스이름 객체참조변수이름; ex) Car Yellow;

--객체 생성 단계--> 객체참조변수이름 = new 클래스이름(); ex)Yellow = new Car();

  • 객체가 사용할 메모리 영역을 할당하는 과정 : 예약어 new 사용
  • 생성된 객체에 대한 참조 값(일종의 메모리 주소)의 선언된 객체 참조 변수에 할당.

멤버 변수의 선언

  • 전역(Global) 변수 클래스 선언부 및에 선언된 변수로 멤버 변수라고 칭함 여러 메서드에서 공통으로 사용할 수 있음 -> 객체가 가질 수 있는 속성을 나타내는데 사용됨

  • 지역(Local)변수 메서드 선언부 밑에 선언된 변수 해당 변수가 선언된 메서드 내에서만 사용할 수 있음

  • 구문 [modifier] 데이터타입 변수이름; [modifier] -> 변수에 대한 접근 권한이나 활용 방법 제어 -> modifier 미지정 시 같은 패키지 내의 클래스에만 접근이 가능한 객체 변수라는 의미를 갖게 됨

멤버 변수의 선언

접근 권한

  • public : 모든 클래스에서 접근이 가능함을 의미함
  • protected : 동일 패키지에 속하는 클래스와 하위 클래스 관계의 클래스에 의해 접근이 가능하다는 의미임
  • private : 변수가 선언된 클래스 내에서만 접근이 가능하다는 의미

활용 방법

  • final : 변수를 상수로 이용하는 경우 사용함.
  • static : 클래스에 소속된 클래스 변수를 의미하여, 일반적으로 클래스 변수라고 함.

접근 제한자(Access Modifier)

접근 제한자란 클래스, 변수, 메서드에 접근할 수 있는 권한을 나타내기 위해 사용됨 접근 관련 modifier를 통해 정보 은닉(Information Hiing)을 구현할 수 있음.

정보 은닉(Information Hiding)

캡슐화 : 변수 + 메서드 : 하나의 클래스로 묶음 정보 은닉 : 공개(public), 비공개(private)

메서드(Method) 정의하기

클래스 = 멤버변수 + 메서드

메서드는 일종의 함수(Function)로서, 클래스가 제공할 로직들을 정의함

구문 [access modifier] 반환현(return_type) 메서드명(arg1, arg2,... argn){ // 메서드의 실행 코드 }

사용 예

public int sum(int num1, int num2){
   int sum = 0;
   sum = num1 + num2;
   return sum;
}

메서드 앞에 접근 제한자를 붙일 수 있음 메서드의 수행 결과를 리턴할 수 있도록 반환형으로 선언해야 함 -> 반환 값이 없다면 void를 선언해야 함 메서드명 뒤에 괄호를 이용해서 메서드 수행에 필요한 값들을 받아들일 수 있도록 매개변수를 선언함

메서드 선언부 : 반환형, 메서드명, 매개변수 -> 메서드 시그니쳐(Signature)

메서드(Method) 정의하기

메서드 구성 요소

  • 접근 제한자(Access Modifier) : 접근 제한 시 사용되는 키워드이며, 생략 가능함
  • 반환형(Return_type) : 반환형은 메서드가 수행되고, 수행 결과로 리턴되는 데이터 타입임. 기본형이나 참조형 모두 올 수 있으며, 만약 아무런 값도 리턴하지 않는 경우는 void로 선언함
  • 메서드명 : 메서드명은 식별자(Identifier)의 규칙에 따라 프로그래머가 명시함
  • 매개변수(Parameter) : 메소드 수행 시에 전달되는 인자의 타입과 변수명으로 존재함. 각 인자는 쉼표로 구분하여, 메소드가 인자를 갖지 않으면'()'를 빈 채로 둠.

메서드 Modifier

접근 권한

  • public : 모든 클래스에서 접근이 가능한 클래스임을 의미함
  • protected : 동일 패키지에 속하는 클래스와 하위 클래스 관계의 클래스에 의해 접근이 가능함을 의미함
  • private : 클래스 내에서만 접근이 가능하다는 의미

활용 방법

  • final : Overriding이 불가능한 메서드를 정의할 때 이용함
  • static : 클래스에 소속된 클래스 메서드를 의미하며, 클래스 생성 시 만들어짐
  • abstract : 추상 메서드를 의미하며, 하위 클래스에 의해 구현됨
  • synchronized : Thread의 동기화를 위한 메서드임.

-> 접근권한을 나타내는 Midifier의 경우 그 쓰임은 멤버 변수와 동일함 -> 메서드를 선언하는 경우에도 접근 관련 Modifier를 이용해서 적절하게 정보 숨김을 구현할 수 있음.

유형별 메서드

  1. 리턴 값과 매개변수가 없는 메서드
  • 메서드의 기능이 외부로부터 받아들일 데이터가 필요 없는 경우, 매개변수가 없는 메서드로 선언함
  • 리턴할 데이터가 아무 것도 없는 경우, void 예약어로 리턴 타입을 지정하면 됨
  1. 리턴 값은 없고 매개변수만 있는 메서드
  • 매개변수 정보만 받아서 로직을 처리하고 아무 것도 리턴하지 않는 경우
  1. 리턴 값도 있고 매개변수도 있는 메서드
  • 매개변수로 받은 데이터를 이용하여 적절한 로직을 처리하고, 처리 결과를 메서드가 호출될 곳으로 되돌려주면 됨.

메서드의 자동 구현

멤버 변수들은 대부분의 걍우 private로 선언해서 외부에서는 숨겨진 형태로 만듦 public으로 지정한 메서드를 통해 접근하도록 클래스를 구현함. -> 정보 은닉의 기본쓰~