IT Memory Note

[정보처리기사] 프로그래밍 언어 활용 : 자바(3) 본문

자격증/정보처리기사

[정보처리기사] 프로그래밍 언어 활용 : 자바(3)

h00ddu 2024. 8. 14. 02:58

 

9️⃣ 클래스(Class)

 


(1) 클래스의 개념

 

  • 객체 지향 프로그래밍(OOP, Object-Oriented Programming)에서 특정 객체를 생성하기 위해 변수와 메서드를 정의하는 틀

 

(2) 클래스 접근 제어자(Access Modifier)

 

1. 클래스 접근 제어자의 개념

 

  • 지정된 클래스, 변수, 메서드를 외부(같은 패키지이거나 다른 패키지)에서 접근할 수 있도록 권한을 설정하는 기능

2. 클래스 접근 제어자의 종류

 

종류 설명
public 외부의 모든 클래스에서 접근이 가능한 접근 제어자
protected 같은 패키지 내부에 있는 클래스, 하위 클래스(상속받은 경우)에서 접근이 가능한 접근 제어자
자기 자신과 상속받은 하위 클래스 둘 다 접근이 가능한 접근 제어자
default 접근 제어자를 명시하지 않은 경우로 같은 패키지 내부에 있는 클래스에서 접근이 가능한 접근 제어자
private 같은 클래스 내에서만 접근이 가능한 접근 제어자

default : 자바에만 존재하는 접근 제어자


 

(3) 클래스 정의

 

  • 클래스에서 변수는 변수 선언과 동일하고, 메서드는 사용자 정의 함수와 문법이 동일함
  • 일반적으로 변수는 private 접근 제어자를 사용하여 외부에서 접근하지 못하게 하며, 메서드는 외부에 공개할 것만 public 접근 제어자를, 그렇지 않으면 protected나 private 접근 제어자를 사용하여 정보은닉을 함
public class 클래스명 {
  private 자료형 변수명;
  public 반환_자료형 메서드명(자료형 변수명, ...) {
    명령어;
    return 반환값;
  }
}

※ 정보은닉(Information Hiding) : 코드 내부 데이터와 메서드를 숨기고 공개 인터페이스를 통해서만 접근이 가능하도록 하는 코드 보안 기술


 

(4) 클래스 변수 생성

 

  • 클래스는 객체를 생성하기 위해 변수와 메서드를 정의하는 틀이므로 실제 변수에 들어갈 인스턴스를 new 키워드로 생성해주어야 함
  • 변수를 이용해 클래스의 메서드에 접근함
클래스명 변수명 = new 클래스명(파라미터);
변수명.메서드명();

 


 

(5) 클래스 this

 

  • 현재 객체를 가리키는 키워드
  • 클래스 내부의 변수와 메서드를 가리킬 수 있음
클래스 내부 변수 접근 this.변수;
클래스 내부 메서드 접근 this.메서드(매개변수);
클래스 내부 생성자 호출 this(매개변수);

 


 

(6) 생성자(Constructor)

 

  • 해당 클래스의 객체가 생성될 때 자동으로 호출되는 특수한 종류의 메서드
  • 일반적으로 클래스의 멤버 변수를 초기화하거나 클래스를 사용하는 데 필요한 설정이 필요한 경우 사용함
  • 클래스명과 동일한 메서드명을 가지고, 반환값이 없음
  • 생성자가 없을 경우 public 클래스명( ){ }이라는 아무 일도 하지 않는 생성자가 있는 것처럼 동작함
구분 코드
생성자 정의 public class 클래스명 {
   public 클래스명(매개변수) {
      명령어;
   }
}
생성자 호출 클래스명 클래스변수 = new 클래스명(매개변수);

 


 

🔟 클래스 상속(Class Inheritance)

 


(1) 클래스 상속의 개념

 

  • 어떤 객체가 있을 때 그 객체의 변수와 메서드를 다른 객체가 물려받는 기능
  • 자식 클래스를 생성하면 무조건 부모 클래스의 생성자를 실행한 후에 자식 클래스의 생성자를 실행함

 

(2) 클래스 상속의 문법
class 부모클래스명 {
}
class 자식클래스명 extends 부모클래스명 {
}

자바는 자식 클래스를 생성하면 부모 클래스 생성자를 먼저 방문하고, 그다음에 자식 클래스 생성자를 방문함


 

(3) 오버로딩(Overloading)

 

  • 동일 이름의 메서드를 매개변수만 다르게 하여 여러 개 정의할 수 있는 기능

< 오버로딩의 특징 >

 메서드 이름이 같아야 함
매개변수 개수가 달라야 함
매개변수 개수가 같을 경우 데이터 타입이 달라야 함
 반환형은 같거나 달라도 됨

 생성자는 클래스명과 동일한 이름의 메서드이고, 오버라이딩은 부모, 자식 간 동일한 이름의 메서드로, 생성자는 오버라이딩이 안 됨


 

(4) 오버라이딩(Overriding)

 

  • 하위 클래스에서 상위 클래스 메서드를 재정의할 수 있는 기능

< 오버라이딩의 특징 >

오버라이딩하고자 하는 메서드가 상위 클래스에 존재하여야 함
메서드 이름은 같아야 함
메서드 매개변수 개수, 데이터 타입이 같아야 함
 메서드 반환형이 같아야 함

 

< 오버라이딩 구문 >

class 부모클래스명 {
  public 반환_자료형 메서드명(자료형 변수명) {
  }
}
class 자식클래스명 extends 부모클래스명 {
  public 반환_자료형 메서드명(자료형 변수명) {
  // 부모 클래스의 메서드명, 매개변수가 동일해야 함
  }
}

 


 

(5) 부모 클래스 접근

 

  • 자바는 super 키워드를 이용하여 상위 클래스의 변수나 메서드에 접근할 수 있음

< 부모 클래스 접근 구문 >

부모 클래스 내부 변수 접근 super.변수;
부모 클래스 내부 메서드 접근 super.메서드(매개변수);
부모 클래스 내부 생성자 호출 super(매개변수);

 


 

1️⃣1️⃣ 추상 클래스(Abstract Class)

 


(1) 추상 클래스의 개념

 

  • 미구현 추상 메서드를 1개 이상 가지며, 자식 클래스에서 해당 추상 메서드를 반드시 구현하도록 강제하는 기능

 

(2) 추상 클래스 구문
abstract class 추상클래스명 {
  abstract 자료형 메서드명();   // 메서드 내부는 정의하지 않음
}
class 자식클래스명 extends 추상클래스명 {
  자료형 메서드명() {
    명령어;   // 메서드를 상속받아 메서드 내부를 정의
  }
}

메서드 내부를 정의하지 않는다는 것은 메서드 내부에 소스 코드를 이용해서 구현하지 않는다는 것이고, 메서드 내부를 정의한다는 것은 메서드 내부를 소스 코드를 이용해서 구현한다는 것임


 

 1️⃣2️⃣ 인터페이스(Interface)

 


(1) 인터페이스의 개념

 

  • 자바의 다형성을 극대화하여 개발코드 수정을 줄이고 프로그램 유지보수성을 높이기 위한 문법(일종의 추상 클래스)
  • 오직 추상 메서드와 상수만을 멤버로 가질 수 있으며, 그 외의 다른 어떠한 요소도 허용하지 않음
  • 구현된 것은 아무것도 없고 밑그림만 그려져 있는 '기본 설계도'라고 할 수 있음

 

(2) 인터페이스 구문
interface 인터페이스클래스명 {
  자료형 메서드명();   // 메서드 내부는 정의하지 않음
}
class 자식클래스명 implements 인터페이스클래스명 {
  // interface의 메서드를 상속받아 내부를 정의
}