함수/메서드, 클래스/인스턴스, 웹서버/와스, 추상 클래스/일반 클래스/인터페이스

함수/메서드, 클래스/인스턴스, 웹서버/와스, 추상 클래스/일반 클래스/인터페이스

1. 함수와 메서드의 차이

함수는 객체와 관련이 없는 함수다. 메서드는 객체에 속해있는 함수다.

그래서 자바는 메서드 라고 하고, 자바스크립트나 베이직같은 스크립트 언어에서는 함수라고 한다.

(물론 자바스크립트에서도 객체와 메서드를 만들 수 있다.)

2. 클래스와 인스턴스의 차이

클래스는 객체의 설계도이고, 인스턴스는 메모리 할당된(new 처리한) 객체다.

1개의 클래스를 토대로 n개의 인스턴스가 만들어질 수 있음.

3. 웹서버와 와스의 차이

웹서버는 정적 파일(html, 이미지, js)을 그대로 전달 해주고,

와스는 동적 파일(jsp)을 컴파일 처리한다.

웹서버의 대표적인 예로 아파치가 있고, 와스의 대표적인 예로 톰캣이 있다.

jsp 프로젝트를 실행할 때 톰캣으로 돌릴 수도 있고 아파치 + 톰캣으로 돌릴 수도 있는데,

둘 다 똑같이 돌지만 성능에 차이가 있다.

전자는 아파치가 html, 이미지, js를 처리하고 톰캣이 jsp를 처리한다.

후자는 톰캣 혼자 html, 이미지, js, jsp를 처리하니까 살짝 더 느리겠지.

4. 추상 클래스와 일반 클래스의 차이

추상 클래스는 구현되지 않은 메서드(=추상 메서드)가 1개 이상 존재한다.

일반 클래스는 모든 메서드가 구현되어 있다.

5. 추상 클래스와 인터페이스의 차이

추상 클래스는 어디까지나 클래스다. 상속 가능하다.

추상 클래스는 구현되지 않은 메서드와 구현된 메서드가 같이 존재할 수 있다.

인터페이스는 구현되지 않은 메서드만 갖고 있다. 클래스가 아니므로 상속(익스텐즈)이 불가능하고, 대신, 구현(임플리먼트) 가능하다.

자바는 다중 상속이 지원되지 않는 한편 인터페이스를 지원한다. (다중 상속의 장점만을 취함)