Java의 정석 객체지향 프로그래밍

김민석·2026년 2월 23일

상속

기존 클래스를 확장(재사용)하여 새로운 클래스 작성

class Parent {}
class Child extends Parent {} // parent를 상속받음

자식이 부모를 의존하고 있음. 즉 부모가 가진 모든 멤버를 상속받음.
부모보다 자식이 더 넓은 범위 그 안에 부모

포함

클래스 안에 참조형 변수 선언하는 것

class Circle {
	Point c  = new Point();
   int r;
}

단일 상속

하나의 부모만 허용함. 하나는 상속 하나는 포함으로 이용하면 됨,

오버라이딩

부모의 메서드 덮어쓰기 자손에서 같은 메서드를 사용하는데 안에 내용을 변경하여 사용하는 것

오버라이딩 조건

  1. 선언부 일치
  2. 접근 제어자 좁게 x
  3. 부모 메서드보다 많은 예외 선언 x

    super

    참조변수, 부모 멤버 구별에 사용

    위 사진과 같이 상속받은 경우 부모의 x 가 있고 자식에도 x 가 있는데 둘중 부모의 x를 사용할 경우 super.x 자식의 즉 본인의 x를 사용하려면 this.x를 사용함

super 초기화


위 사진과 같이 자손이 저렇게 초기화 하는것이 아닌 부모가 초기화를 하고 super(x,y) 를 사용하여 조상의 생성자를 호출하는 방법이 맞음.자식 초기화 단계에서 this.x =x this.y = y 를 하는게 아니라 super(x,y)를 호출해 부모의 생성자 호출

패키지

class의 묶음 즉 관련된 class들을 묶어놓은 것

jar파일

여러개의 패키지와 클래스를 묶은 것

시스템 변수 편집 classpath

시스템 변수 편집에서 classpath에 해당 프로젝트의 위치를 넣어주면 cmd에서도 class 실행가능 하지만 .;[프로젝트 위치] 앞에 .;를 붙여줘야함.

import문

클래스 이름에ㅔ서 패키지 이름을 생략할 수 있게 import하는 것

제어자

대상에 부가적인 의미 부여하는 것

  • 접근 제어자 : public,private 등
  • 그 외 : static,final,abstrat 등

final

변경될 수 없는(상수). 즉 const 느낌, 오버라이딩 불가

상수

상수를 보통 final static 으로 하는데 객체마다 다른 상수값 가질떄는 final만 붙여서 사용함.

abstract

추상적인 것. 즉 미완성 메서드 및 클래스에 붙임.
추상 메서드가 있는 클래스는 추상 클래스로 해줘야함.

접근 제어자

  • public : 모든곳에서 허용
  • private : 같은 클래스 안에서만 사용
  • protected : 같은 클래스 같은 패키지 다른 패키지 자손도 가능.
  • default : 같은 클래스 및 같은 패키지에서 사용가능

클래스에는 public만 사용가능 메서드, 멤버변수는 모두 사용가능.

접근 제어자 사용이유

외부로부터 데이터를 보호하기 위하여(캡슐화)
private를 활용해 클래스 안에서 즉 외부에서 접근 불가능하게 할때 사용 그리고 메서드는 public을 통해 직접 변수를 조정하는게 아닌 만들어둔 메서드를 사용하여 변수를 변화 시킬 수 있게 구현하는 것?

생성자의 접근 제어자

  • private 생성자는 외부에서 객체 생성 불가
  • 메서드 내부에서 해당 객체의 생성자를 호출하는 경우 생성함
    • 싱글톤에서 주로 사용함 (객체를 1개만 생성)
      • getInstance() 메서드를 static 메서드로 두고, getInstance()를 호출하면 싱글톤 객체가 생성이 되게끔 생성자를 두는 경우 private 생성자를 둠
profile
나만의 기록장

0개의 댓글