함수/메서드, 클래스/인스턴스, 웹서버/와스, 추상 클래스/일반 클래스/인터페이스
1. 함수와 메서드의 차이
함수는 객체와 관련이 없는 함수다. 메서드는 객체에 속해있는 함수다.
그래서 자바는 메서드 라고 하고, 자바스크립트나 베이직같은 스크립트 언어에서는 함수라고 한다.
(물론 자바스크립트에서도 객체와 메서드를 만들 수 있다.)
2. 클래스와 인스턴스의 차이
클래스는 객체의 설계도이고, 인스턴스는 메모리 할당된(new 처리한) 객체다.
1개의 클래스를 토대로 n개의 인스턴스가 만들어질 수 있음.
3. 웹서버와 와스의 차이
웹서버는 정적 파일(html, 이미지, js)을 그대로 전달 해주고,
와스는 동적 파일(jsp)을 컴파일 처리한다.
웹서버의 대표적인 예로 아파치가 있고, 와스의 대표적인 예로 톰캣이 있다.
jsp 프로젝트를 실행할 때 톰캣으로 돌릴 수도 있고 아파치 + 톰캣으로 돌릴 수도 있는데,
둘 다 똑같이 돌지만 성능에 차이가 있다.
전자는 아파치가 html, 이미지, js를 처리하고 톰캣이 jsp를 처리한다.
후자는 톰캣 혼자 html, 이미지, js, jsp를 처리하니까 살짝 더 느리겠지.
4. 추상 클래스와 일반 클래스의 차이
추상 클래스는 구현되지 않은 메서드(=추상 메서드)가 1개 이상 존재한다.
일반 클래스는 모든 메서드가 구현되어 있다.
5. 추상 클래스와 인터페이스의 차이
추상 클래스는 어디까지나 클래스다. 상속 가능하다.
추상 클래스는 구현되지 않은 메서드와 구현된 메서드가 같이 존재할 수 있다.
인터페이스는 구현되지 않은 메서드만 갖고 있다. 클래스가 아니므로 상속(익스텐즈)이 불가능하고, 대신, 구현(임플리먼트) 가능하다.
자바는 다중 상속이 지원되지 않는 한편 인터페이스를 지원한다. (다중 상속의 장점만을 취함)