자바는 jvm 덕분에 OS에 독립적인 특징을 가지고 있다. (인터프리터는 고급 언어로 작성된 프로그램을 한줄씩 번역해서 OS에서 인식하는 기계어로 변역하는 역할)개발자가 자바 소스코드(.java)를 작성합니다.자바 컴파일러(Java Compiler)가 자바 소스파일을
불변의 속성을 갖는다.기존에 "hello" 값이 들어가있던 String 클래스의 참조변수 str이 "hello world"라는 값을 가지고 있는 새로운 메모리영역을 가리키게 변경된다.처음 선언했던 "hello"로 값이 할당되어 있던 메모리 영역은 Garbage로 남아있
Class : public, defaultConstrutor : public, protected, default, privateMember 변수 : public, protected, default, privateMember method : public, protect
객체지향 프로그래밍기본의 만들었던 내용을 재사용할 수 있다는 장점이 있다.프로그램을 독립된 단위인 객체들의 모임으로 보고 각각 객체는 메시지를 주고 받고 데이터를 처리함.불필요한 부분을 숨긴다.인터페이스와 구현을 분리한다.위 코드는 RateDiscountPolicy 클
어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다.덧셈 로직을 바꾸고 싶다 → sum 클래스를 고친다 (O)덧셈과 뺄셈 로직을 바꾸고 싶다 → 계산기 로직을 바꾼다 (X)그리고 작은 클래스 여러개를 만들어서 한 곳에 몰아 넣기보다는 이름과 기능에 따라 명확한
전에 포스팅한 자바 컴파일 과정을 참고하자 !자바 가상머신컴파일러가 컴파일한 바이트 코드를 실행할 수 있는 주체Class Loader, Garbage Collector, Runtime Data Area, Excute engine 로 구성되어 있다. → CPU나 운영체
객체를 만들어 내기 위한 설계도클래스로 구현된 모든 대상클래스 타입으로 선언되었을 때 객체라고 부른다. Animal animal선언한 객체는 아직 어떠한 메모리도 차지하지 않음클래스 인스턴스라고도 부른다.객체 중에서 설계도를 바탕으로 소프트웨어 세계에 구현된 구체적인
인터페이스와 추상클래스의 차이를 보기 전에먼저 추상메소드가 무엇인지 알아보자.선언부는 있는데 구현부가 없는 메소드메서드의 내용이 너무 일반적인 내용이라 부모클래스에서 구체화하여 정의할 필요가 없을 경우어떠한 클래스(인터페이스)에 추상메소드가 있으면, 그 클래스(인터페이
이 글은 예전에 쓴 OOP의 네가지 특징에 대한 글이 2300번이나 읽혀진 게 부끄러워서 작성하게 되었다. 그 글에는 오타도 있고 객체지향을 잘 정리해놓은 것도 아닌데 생각보다 많은 사람이 봐서 놀랐다. 이 글에서는 좀 더 객체지향을 잘 이해할 수 있도록 글을 작