본문 바로가기

java

(28)
[JAVA] 8. 인터페이스 Chapter 8. 인터페이스 (Interface)인터페이스의 사전적 정의는 사물과 사물 사이 또는 사물과 인간 사이의 경계에서, 상호 간의 소통을 위해 만들어진 물리적 매개체나 프로토콜이다.IT용어로는 컴포넌트에 접속하기 위한 규격이라고 나와있는데, JAVA에서의 인터페이스는 무엇인가 인터페이스 인터페이스란 규제의 일환으로 일종의 추상클래스이다.추상클래스보다 추상화 정도가 높아서, 일반 메서드 또는 멤버변수를 구성원으로 가질 수 없는 것이 차이점이다.추상클래스를 미완성 설계도라고 비유했다면, 인터페이스는 밑그림만 그려져있는 설계도를 위한 스케치, 기본 설계도라고 볼 수 있다. 문법 어떤 객체가 있고, (클래스가 있고) 그 클래스가 특정한 인터페이스를 사용한다면 그 클래스는 반드시 인터페이스에 구현되어 ..
[JAVA] 7. 추상클래스와 추상메서드 Chapter 7. 추상클래스 (abstract class)제어자 중에서 abstract라는 것이 있었다.이 제어자가 클래스 앞에 붙으면 추상클래스가 된다.추상클래스가 무엇이며, 사용하는 이유는 무엇인가? 추상클래스클래스를 설계도에 비유한다면, 추상클래스는 미완성 설계도에 비유할 수 있다.단어 뜻 그대로 완성되지 못한 채로 남겨진 설계도를 말한다.미완성 메서드(추상메서드)를 포함하고 있다는 의미이다,추상메서드를 포함하고 있다는 것을 제외하고는 일반 클래스와 전혀 다르지 않다. 추상클래스는 그 자체로 클래스 역할을 다 하지 못하지만,새로운 클래스를 작성하는데 있어서 바탕이 되는 조상클래스로서의 중요한 역할을 한다. 추상메서드(abstract Method)메서드는 선언부와 구현부로 구성되어 있다.추상메서드란..
[JAVA] 6. 접근제어자와 정보은닉 Chapter 6. 접근제어자(access modifier)과 정보은닉(information hiding)자바를 공부하기 전에 C언어 공부를 선행했다면,반환형 함수이름 매개변수 말고 앞에 하나씩 더 붙고 있다는 걸 알았을 것이다.자바에서는 정의한 클래스 또는 메소드에 접근할 수 있는 범위를 설정해두어서,정보를 은닉해두고 더 나아가 캡슐화 한다. 제어자(modifier)제어자란 클래스. 변수 또는 메서드의 선언부에 함께 사용되어부가적인 의미를 부여하는 역할을 한다.밑에서 설명할 접근제어자 말고도 몇 가지 제어자라고 불리는 것들이 존재한다. static앞에서 static 클래스, static 변수(클래스 변수)를 설명할 때 다뤘다.이 또한 제어자라고 할 수 있다. final변수에 사용되면 값을 변경할 수 없..
[JAVA] 5. 오버로딩과 오버라이딩 Chapter 5. 오버로딩(Overloading)과 오버라이딩(Overriding)이름도 비슷한 두 개는 완전히 다른 개념이다.객체 지향적으로 설계하기 위해서는 반드시 알아야만 하는 개념이다. 오버로딩(overloading)클래스에 메소드를 정의할 때, 같은 이름이지만 서로 다른 매개변수의 형식을 가지고 있는 메소드를 여러개 정의하는 것매개변수의 선언형태가 다를 때 동일한 이름의 메소드를 정의할 수 있는 것.단 반환형이 다른 것은 메소드 오버로딩이 성립되지 않는다.중복되는 부분을 어떻게 처리할 것인가가 또 문제가 된다.this를 이용해도 중복되는 출력을 낳는다.code>class A { int a; int b; pubic void methodA(){ } public void methodB(){ } pu..
[JAVA] 4. 상속과 생성자 / extends, super Chapter 4. 상속과 생성자객체 지향 프로그래밍의 첫 주자로 상속에 대해서 알아본다.그리고 그 상속이라는 개념과 함께 생성자에 대한 개념도 통합적으로 살펴본다. 상속 자바에서의 상속은 재활용 + a 의 기능을 제공한다. 상속이란 상위 클래스를 물려받으면서 새로운 메소드나 변수를 추가하거나 변경해서 사용할 수 있도록 하는 것을 말한다. 즉 기존의 객체를 그대로 유지하면서 어떤 기능을 추가하는 방법이다. 기존의 객체가 갖고 있는 메서드들을 그대로 사용할 수 있다. 하위 클래스는 상위 클래스의 확장판인 셈이다. 상위 클래스를 확장하기엔 부담이 있을 때 상속을 사용한다. 즉, 코드를 하나 이상의 클래스에 중복적으로 추가해야하는 경우에는 상속관계를 이용해서코드의 중복을 최소화해야한다. extends라는 키워..
[JAVA] 3. 자바에서 변수와 메소드에 대하여 / 클래스 메소드, 클래스 변수 Chapter 3. 변수와 메소드자바에서는 변수의 종류가 세 가지로 나뉘어 지고 각각 올라가게 되는 메모리가 다르다.메소드 또한 클래스 메소드인지 인스턴스 메소드인지에 따라 다르다.JVM 메모리 구조와 함께 각 변수와 메소드에 대해 알아본다. 클래스 변수(static 변수) 멤버 변수라고도 한다.모든 인스턴스에서 똑같이 사용하면 되는 변수가 존재할 때,이 똑같은 정보를 한 번에 정의해주면 좋지 않을까라는 생각으로 등장하게 되었다.모든 인스턴스에게 적용될 수 있는 변수이며,모든 인스턴스가 공유하는 변수이다.클래스에 소속되어 있는 변수에 접근하여 사용할 수 있다는 것이다. 인스턴스 변수를 정의할 때 앞에 static을 추가로 정의한다. static 으로 선언된 변수는 메모리 공간 하나에만 존재하며 어디서나 ..
#가비지컬렉션(Garbage Collection) / JVM 구동원리에 이어서 #가비지 컬렉션, GC(Garbage Collection)Minor GC새로 생성된 대부분의 객체(Instance)는 Eden 영역에 위치한다. Eden영역에서 GC가 한 번 발생한 후 살아남은 객체는 Survivor 영역 중 하나로 이동된다. 이 과정을 반복하다가 계속해서 살아남아 있는 객체는 일정시간 참조되고 있다는 뜻이므로 Old영역으로 이동시킨다. Major GCOld영역에 있는 모든 객체들을 검사하여 참조되지 않은 객체들을 한꺼번에 삭제한다. 시간이 오래 걸리고 실행 중 프로세스가 정지된다. 이것을 `stop-the-world`라고 하는데 Major GC가 발생하면 GC를 실행하는 스레드를 제외한 나머지 스레드는 모두 작업을 멈춘다. GC 작업을 완료한 이후에야 중단했던 작업을 다시 시작한다. ..
#자바가상머신, JVM(Java Virtual Machine)이란 무엇인가? #JVM이란?JVM이란 JAVA Virtual Machine, 자바 가상 머신의 약자를 따서 줄여 부르는 용어이다 (가상머신이란 프로그램의 실행하기 위해 물리적 머신과 유사한 머신을 소프트웨어로 구현한 것이다.) JVM 역할은 자바 애플리케이션을 클래스 로더를 통해 읽어 들여 자바 API와 함께 실행하는 것이다. 그리고 JVM은 JAVA와 OS사이에서 중개자 역할을 수행하여 JAVA가 OS에 구애받지 않고 재사용을 가능하게 해준다. 그리고 가장 중요한 메모리관리, Garbage collection을 수행한다. 그리고 JVM은 스택기반의 가상머신이다. ARM 아키텍쳐 같은 하드웨어는 레지스터 기반으로 동작하는데 비해 JVM은 스택기반으로 동작한다. 왜 자바 가상머신을 알아야 하는가?한정된 메모리를 효율적으..