패키지(package) 패키지란 클래스(or 인터페이스)의 묶음이다. 같은 이름의 클래스 일지라도 서로 다른 패키지에 존재하는 것이 가능하다. 가령 java.lang.String 이라는 패키지를 import한다면, class는 String이고, String은 java.lang이라는 물리적인 폴더에 있는 것이다. 즉, 패키지는 물리적인 하나의 폴더인 것이다. 정리 하나의 소스파일에는 첫 번째 문장으로 단 한 번의 패키지 선언만을 허용한다.(package 패키지명) 모든 클래스는 반드시 하나의 패키지에 속해야 한다. 패키지는 점(.)을 구분자로 하여 계층구조로 구성할 수 있다. 패키지는 물리적으로 클래스 파일(.class)을 포함하는 하나의 디렉토리이다. 패키지 명은 클래스와 구분하기 쉽게하기 위해서 소문자..
상속 상속의 정의와 장점 상속이란 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 적은 양의 코드로 새로운 클래스를 작성할 수 있고, 코드를 공통적으로 관리할 수 있어 관리 및 추가 , 변경에 용이하다. 코드의 재사용성을 높이고, 중복을 제거한다. 프로그램의 생산성과 유지보수에 크기 기여 작성 방법 : 새로 작성할 클래스 이름 extends 상속받고자하는 클래스이름 상속해주는 클래스 : 조상 클래스(상위, 기반(base)) 상속받는 클래스 : 자손 클래스(하위, 파생) 화살표는 자손이 부모를 향산다 (상복받았기 때문) 자손 클래스는 부모 클래스의 모든 맴버를 상속받기 때문에 자손 클래스가 더 큰 포함관계를 갖는다고 볼 수 있다. 조상 클래스가 변경되면 자손 클래스는 자동적으로 영향 받지만, ..
JVM 메모리 구조 응용 프로그램이 실행되면, JVM은 시스템으로부터 프로그램을 수행하는데 필요한 메모리를 할당받는다. JVM은 이 메모리를 용도에 따라 여러 영역을 나누어 관리한다. 3가지 중요 영역인 method area, call stack, heap 부분으로 나뉜다. 메서드 영역 프로그램 실행 중 어떤 클래스가 사용되면 , JVM은 클래스 파일(.class)를 읽어서 분석하여 클래스에 대한 정보(클래스 데이터) 를 이곳에 저장한다. 이때 그 클래스의 클래스 변수도 (class variables)도 이 영역에 저장된다. 힙 인스턴스가 생성되는 공간이다. 프로그램 실행 중 생성되는 인스턴스는 모두 이곳에 생성된다. 즉 인스턴스 변수들이 생성되는 공간이다. 호출스택(call stack, executio..
객체지향 6장 객체지향이론의 기본 개념 실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물간의 상호작용이다. 실제 사물의 속성과 기능을 분석한 다음, 데이터(변수)와 함수로 정의함으로써 실제 세계를 컴퓨터 속에 옮겨 놓은 것과 같은 가상 세계를 구현하고 이 가상세계에서 모의 실험을 하여 많은 시간과 비용을 절약한다. 객체지향이론은 상속, 캡슐화, 추상화 개념을 중심으로 점차 구체적으로 발전되었다. 객체지향언어 몇 가지 새로운 규칙을 추가한 보다 발전된 형태이다. 주요 특징 코드의 재사용성이 높다. 새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다. 코드의 관리가 용이하다. 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다. 신뢰성 높은 프로그래밍..
java 실행 자바는 javac라는 자바 컴파일러를 통해 .class 바이트 코드를 만든다. 다음의 바이트 코드를 java 명령어를 통해 실행가능하다. 이는 인터프리터로서 jvm이 이해할 수 있도록 동작한다. 변수 변수 : 변수는 값을 저장할 수 있는 메모리상의 공간을 의미한다. 지역 변수는 반드시 초기화를 해야하지만, 클래스 변수와 인스턴스 변수는 초기화를 생략할 수 있다. 변수의 이름 처럼 프로그래밍에서 사용하는 모든 이름을 식별자라고 한다. 예약어, 키워드는 식별자로 사용할 수 없다. 기본형과 참조형 기본형 : 실제 값을 저장 참조형 : 어떤 값이 저장된 주소를 지정한다. 즉, 객체의 주소를 저장한다. 4byte 주소 값을 갖게된다. 정수형 byte(1byte), short(2byte), int, ..
안녕하세요. 꼰대 개발자입니다. 노답 5형제와 함께 앞으로 험난한 여정을 함께할 수 있어 괴롭겠지만, 한편으로는 절망적이네요. 각설하고, '노답 5형제'의 개발 철학 또는 개발 규칙을 소개하겠습니다. 1. 내하고 싶은거 다할꺼다. 가장 큰 대전제입니다. 물론 제대로 된 방향으로 개발을 진행한다는 가정으로 말씀드리는 것 입니다. 마치, '우리 아이는 하고싶은거 다하게 키울꺼다.' 라는 말이 범죄도 허용하겠다는 말을 내포하지 않는 것처럼 말입니다. 앞으로 저희는 어떤한 개발 일정, 개발 기술에 대한 규칙없이 맘대로 개발할 것 입니다. 가령, 저는 서버를 스프링으로 하고싶습니다! 저는 서버를 golang으로 만들고 싶습니다! 저는 Ruby on Rails 쓰고 싶습니다! 저는 kotlin으로 앱만들고 싶습니다..