
기능을 추가하는 것이 아니라, 껍데기를 만들고 해당 껍데기로 클래스를 구현하는 것. 만약에, 클래스에 다른 기능을 추가하면 SOLID 원칙 위반.

interface Phone {
boolean getIsOn();
}
위 코드에는 사실 public abstract가 숨겨져있다.
interface Phone {
public abstract boolean getIsOn();
}
구현체는 여러 개의 인터페이스를 구현할 수 있다.
접근제어자 class 클래스이름 implements 인터페이스1, 인터페이스2.. {
// 필드
// 생성자
// 인터페이스1에 대한 구현 메소드 (추상 메소드 오버라이딩)
// 인터페이스2에 대한 구현 메소드 (추상 메소드 오버라이딩)
}
내 상위에 있는 친구들은 나보다 공개범위가 넓어서는 안된다.
여기서 답이 나온다.
인터페이스는 public abstract 를 숨기고 있기에,
인터페이스를 구현한 클래스의 메서드는 무조건 public을 사용해야한다.
IntelliJ의 OpenIn -> explorer
소스 코드(.java)
=> 바이트 코드(.class)
=> 기계어
=> 실행
.class: 파일 형식(<= 빌드 결과물, out에 저장되어 있음)
class: 선언 방법
Q. 바이트 코드만 있으면 프로그램이 실행이 될까?
A. 안된다. 여기서 등장하는 개념이 Resources
소스 코드 - 리소스 파일
이어주는 작업인 링킹
소스 코드 => 바이트 코드 - #링킹 - 리소스
면접에서 링킹 에 대해 물어보는 경우가 많다.
링킹(Linking): 여러 개의 코드와 데이터를 모아서 연결하여 메모리에 로드될 수 있고 실행될 수 있는 한 개의 파일로 만드는 작업
이 파일이 메모리에 로딩되어 실행된다. 링크는 컴파일시에 수행되는 경우도 있고, 로딩시에 수행되는 경우도 있고, 실행시에 수행되는 경우도 있다.
링커(Linker): 링킹을 담당하는 프로그램
링커는 소프트웨어 개발에서 독립적인 컴파일을 가능하게 하는 아주 중요한 역할을 담당한다
두 개의 다른 시스템이 서로의 연산을 보여주지 않고 연결시켜주는 것
Hash: 빠르게 검색하기 위함
검색의 목적이란?
: 빠르게 정보를 찾기 위해서

RDBMS
