Java 강의 #3 패키지/접근제어자/추상클래스/인터페이스

김춘복·2023년 2월 9일
0

Java 공부

목록 보기
3/20

객체지향언어 2

패키지

  • 패키지 : 클래스와 인터페이스의 집합. 폴더, 디렉토리 개념.
    서로 관련이 있는 클래스나 인터페이스를 함께 묶음으로써 파일을 효율적으로 관리하기 위함.

  • 자바에서 클래스의 정확한 이름은 패키지 이름까지 포함한다.
    ex) pkg1 안의 Test class의 정확한 이름은 pkg1.Test
    pkg2 안의 Test는 pkg2.Test이므로 둘은 서로 다른 클래스가 된다.

  • 다른 패키지에 있는 클래스를 참조할때는 import를 해야되는데
    다른 클래스를 import할때 패키지 이름까지 정확히 확인해야 한다.

접근제어자 (access modifier)

  • 접근제어자 : 멤버변수, 멤버함수(메소드), 클래스에 사용되며 외부에서의 접근을 제한하는 역할(캡슐화)을 한다.

  • 접근제어자의 종류

  1. public : 접근 제한 x
  2. protected : 같은 클래스, 같은 패키지, 자손 클래스에서 접근 가능
  3. default(nothing) : 같은 클래스, 같은 패키지 내에서만 접근 가능. 아무 선언 안하면 디폴트
  4. private : 같은 클래스 내에서만 접근 가능.
  • super 는 상속받은 부모 클래스를 가르키는 키워드. super.를 쓰면 부모 클래스의 부를 수 있는 모든 메소드를 호출할 수 있다.

추상클래스

  • 추상클래스 : 추상메소드를 선언할 수 있는 클래스. 상속받는 클래스 없이 그 자체로 인스턴스를 생성할 수는 없다. 인터페이스와는 다르게 일반메소드도 구현 가능하다.
    추상클래스를 상속받은 클래스는 추상클래스 안의 모든 추상메소드를 구현해야한다.
    상속을 통해 기능을 확장하는게 주 목적.

  • 추상메소드 : 설계만 되어있고 수행하는 코드에 대해서는 작성이 안된 메소드.(미완성상태)
    상속받는 클래스마다 동작이 달라지게하기 위함. 빈 껍데기. 선언은 되어있는데 코드가 구현되지않음.
    abstract 리턴타입 메소드이름(); << 이게 끝. 추상메소드는 뒤에 {중괄호}를 가질 수 없다.

  • 추상클래스 상속받아 자식클래스 선언하면 빨간 줄 뜨는데 Alt+Enter하면 추상메소드를 오버라이드로 알아서 띄워준다.


인터페이스

  • 인터페이스 : 객체의 특정 행동의 특징을 정의하는 것. 접근제어자, 리턴타입, 메소드 이름만을 정의.(필드 x) 인터페이스를 구현하는 클래스에서 반드시 인터페이스의 상세내용(필드 포함)을 구현해야한다.
    전체적인 틀이나 규칙을 잡는데 중점을 둠. 설계도.
    인터페이스 안에 선언한 메소드는 모두 추상메소드.
    이름은 대문자로 시작하고 주로 형용사형으로 만든다.
    class 구현하려는클래스명 implements 인터페이스명{ }으로 받음
interface 인터페이스명{
public abstract void 추상메서드명();
}

(인터페이스의 메소드는 추상, static default 메소드 모두 허용)

인터페이스 vs 추상클래스

  • 인터페이스
  1. 구현하려는 객체의 동작의 명세
  2. 다중 상속 가능(여러 인터페이스를 상속 받아올 수 있다.)
  3. implements를 이용하여 구현
  4. 메소드 시그니처(이름, 파라미터, 리턴 타입)에 대한 선언만 가능
  • 추상클래스
  1. 클래스를 상속받아 이용 및 확장을 위함
  2. 다중 상속 불가능 , 단일 상속
  3. extends를 이용하여 구현
  4. 추상메소드에 대한 구현 가능
profile
Backend Dev / Data Engineer

0개의 댓글