Java_note03

채승현·2025년 3월 24일

객체지향

  1. 캡슐화=데이터 은닉
  2. 추상화->미완성
  • 클래스: 일반클래스, 추상클래스, 추상메소드

1. 클래스

  • 객체를 사용할 수 있는 실체, 객체를 만들기 위한 설계도
  • 객체(Object)=클래스의 인스턴스(instance)
  • 클래스의 구성요소: 필드(멤버변수), 메소드, 생성자

2. 특징

  • 캡슐화
  • 상속: 재사용성
  • 다형성
  • 클래스 용도->라이브러리와 실행용
    라이브러리는 다른 클래스에서 이용할 목적, 실행용은 프로그램의 진입점인 main() 메소드를 제공

3. 클래스의 구조

  • 클래스 정의
접근 지정자 class 클래스명{ ~ }

※파일 이름과 동일한 클래스 선언에만 public 접근 제한자를 붙인다.
  • pakage, import

    • pakage: 주석 제외 첫번째 줄에 위치
    • import: 다른 패키지의 클래스 사용하고자 할때 사용
  • field(필드=멤버변수)

    • 클래스의 속성, 특성
    • 지역변수와의 차이: 필드는 힙 메모리에 저장, 지역변수는 스택 메모리에 저장
  • 생성자(constructor)

    • 특징: 클래스 이름과 동일
    • 역할: 객체 생성 및 초기화
    • 모든 클래스는 생성자를 반드시 포함한다.
      생성자를 정의하지 않으면 컴파일러에 의해 자동 추가된다. 생성자를 정의한 경우 기본생성자를 추가하지 않는다.
  • 접근제어자(접근지정자)

    • 클래스 멤버 및 생성자 앞에 위치

    • 아무것도 작성하지 않으면 default 접근지정자 자동설정

    • public>protected>default>private

      • public: 동일 클래스 내에서만 사용
      • default: 동일 패키지 모든 클래스에서 사용가능
      • protected: 동일 패키지 모든 클래스 + 다른 패키지 자식클래스에서 사용가능
      • public: 동일패키지 모든 클래스 + 다른 패키지 모든 클래스에서 사용가능
  • final 제어자
    필드, 지역변수, 메소드, 클래스 앞에 위치

    • final변수: 한번 대입한 값을 수정할 수 없다. 선언과 동시에 값을 초기화하거나 생성자에서 초기화해야 한다.
    • final 메소드: 메소드 오버라이딩 불가능
    • final 클래스: 상속 불가능
  • method(메소드)

    • 클래스가 가진 기능
    • 중복 코드 모듈화
접근지정자 static 리턴타입 메서드이름(입력매개변수 타입 입력매개변수명, ~ )
{
	//메서드의 내용
}
  • 프레임(frame)
    정의된 메소드의 중괄호에 해당하는 범위를 메모리에서 frame 이라 부른다. 해당 메소드가 종료되면 JVM은 해당 프레임을 삭제한다.

  • 메소드 오버로딩(overloading)

    • 같은 이름의 메소드를 여러개 생성하는 것
    • 매개변수의 타입, 갯수, 순서 중 하나가 달라야한다.
    • 반환타입은 영향을 주지 않는다.

4. this키워드와 this() 메소드

  • this
    자신이 속한 클래스의 객체를 나타낸다.
  • this()
    생성자 내부에서만 사용가능, 이 메소드를 이용해 생성자 오버로딩 시 중복성을 제거한다.
profile
예비 개발자..(원해요)

0개의 댓글