본문 바로가기

CS/Java9

[자바] 인터페이스(Interface)와 추상클래스(Abstract Class) 인터페이스와 추상클래스 1) 공통점 - 인스턴스를 생성할 수 없음 - 선언만 되어있고 구현이 되어있지 않음 - 하위 클래스에 메소드의 구체적인 내용을 구현해야 함 2) 차이점 (1) 인터페이스(Interface) - 서로 관련없는 클래스에 공통적으로 사용되는 기능이 필요하지만, 내부 로직은 각각 구현해야할 때 - 다중 상속 가능 - implements 키워드로 상속 - 협업 시에 기술 명세서로 사용 (2) 추상클래스(Abstract Class) - 추상 메소드를 하위메소드가 구체화해 그 기능을 확장하는데 목적 - 단일 상속만 가능 - extends 키워드로 상속 2020. 6. 29.
[자바] 상속(Inheritance) 상속(Inheritance) - 상위 클래스의 모든 멤버와 메소드를 하위 클래스가 물려받는 것 - private 멤버를 제외한 상위 클래스의 모든 멤버는 상속가능 - 재사용성과 코드의 간결성을 향상 - 최상위 클래스는 java.lang.Object - 개발자가 만든 클래스를 상속할 수 있고, JDK에서 지원하는 클래스를 상속할 수 있음 - 상속의 종류는 단일상속과 다중상속이 있으나, 자바는 다중상속을 지원하지 않음 - 다중 상속을 하고 싶으면 Hasing 관계를 이용해야 함 - extends 키워드를 이용해 상속 2020. 6. 29.
[자바] 클래스 / 객체 / 인스턴스 클래스(Class) - 객체를 만들어내기 위한 설계도 또는 틀 - 연관되어 있는 변수와 메소드의 집합 객체(Object) - 클래스로 구현한 모든 대상 - 클래스의 인스턴스 - 인스턴스의 포괄적 개념 - 클래스의 타입으로 선언되었을 때, 객체라고 말함 인스턴스(Instance) - 객체에 포함되는 개념 - 객체가 메모리에 할당되어 실제 사용될 때, 인스턴스라고 말함 클래스와 객체 - 클래스는 설계도 - 객체는 설계도로 구현한 모든 대상 객체와 인스턴스 - 클래스 타입으로 선언되었을 때를 객체라고 말함 - 객체가 메모리에 할당되어 실제 사용될 때를 인스턴스라고 말함 2020. 6. 29.
[자바] Static Static 변수 - 클래스 멤버 - 동일한 클래스의 모든 객체가 공유하는 변수 - 클래스 당 하나가 생성 - 객체가 생성되기 이전 클래스 로딩 시에 생성 Non static 변수와 Static 변수 Non-static 멤버 (인스턴스 멤버) Static 멤버 (클래스 멤버) 공간적 특성 멤버는 객체마다 별도로 존재 멤버는 클래스 당 하나가 생성 시간적 특성 객체 생성시에 멤버가 생성 클래스 로딩 시에 멤버가 생성 공유의 특성 객체 간 공유하지 않음 동일한 클래스의 모든 객체가 공유 2020. 6. 29.
[자바] 데이터타입 기본 데이터 타입(Primitive Data Type) - 크기가 작고 고정적이기 때문에 Stack 영역에 저장 1) 정수형 - byte, short, int, long 2) 실수형 - float, double 3) 논리형 - boolean 4) 문자형 - char 참조형 데이터 타입(Reference Data Type) - Interface, 배열, 클래스 등 기본형을 제외한 모든 데이터 타입 - new 키워드를 이용해 객체를 생성하고 데이터가 생성된 주소를 참조 - 즉, 참조 타입은 값이 저장된 곳의 주소를 저장하는 공간으로 객체의 주소를 저장 - String은 new 키워드 이외에 리터럴로 선언가능하지만 참조형 데이터 타입 - 크기가 가변적이기 때문에 Heap 영역에 저장 - GC에 의해 제거되는 대상 2020. 6. 29.
[자바] Collection Frameworks Collection Frameworks - 다수의 데이터를 효과적으로 처리하기위한 표준화된 방법을 제공하는 클래스의 집합 - 자료구조와 알고리즘을 인터페이스를 사용해 구조화하여 클래스로 구현 1) Collection - 가장 원시적인 자료구조 - 중복 허용 - 순서를 보장하지 않음 2) List - Collection을 상속 - 시작점과 끝점을 가짐 - 중복 허용 - 순서 보장 - ArrayList, LinkedList(Queue), Vector, Stack ! ArrayList와 배열 - ArrayList는 내부적으로 Object type의 배열로 구성 - ArrayList는 resizing 가능 ! ArrayList와 Vector - Vector는 동기화 처리가 되어있음 - 멀티스레드 환경이 아닌 경.. 2020. 6. 29.
[자바] 가비지 컬렉션(GC, Garbage Collection) 자바 가비지 컬렉션(GC, Garbage Collection) - 힙 영역에 저장된 더 이상 사용하지 않는 객체들을 메모리에서 제거함을써, 메모리를 효율적으로 관리해주는 기능 - full GC가 일어나면 가비지 컬렉션을 수행하는 스레드를 제외한 나머지 스레드가 동작을 멈춤 - 따라서 WAS의 컨테이너에서 서비스 처리가 진행되지 않고, GC를 많이 할수록 WAS의 응답 시간에 많응 영향 - 애플리케이션의 성능을 생각한다면 GC가 어떻게 처리되고 어떤 방식을 사용하는지에 대한 이해 필요 1) GC 원리 - 가비지 컬렌션의 기본적인 원리는 Mark-Sweap 알고리즘 사용 - 현재 참조하고 있는 객체(reachable)를 mark하고, mark되지 않은 객체(unreachable)를 sweap 2) 힙 영역 .. 2020. 6. 29.
[자바] 자바가상머신(JVM, Java Virtual Machine) 자바가상머신(JVM, Java Virtual Machine) - 운영체제 위에서 동작하는 프로세스로 자바 바이트 코드를 실행할 수 있는 주체 - 자바 코드(.java)를 컴파일해서 얻은 바이트 코드(.class)를 해당 운영체제가 이해할 수 있는 기계어로 번역 - 자바 애플리케이션이 운영체제에 독립적으로 실행될 수 있는 환경 제공 - 운영체제로부터 해당 프로그램이 필요로하는 메모리를 할당받고, 이 메모리를 용도에 따라 여러 영역으로 나누어 관리 1) 구조 (1) 클래스 로더(Class Loader) - 클래스 파일을 엮어서 JVM이 런타임 데이터 영역으로 적재하는 역할 (2) 실행 엔진(Execution Engine) - 클래스 로더에 의해 메모리에 적재된 클래스파일을 기계어로 번역해 실행하는 역할 (3.. 2020. 6. 29.
[자바] 객체지향언어(Object Oriented Programming) 객체지향언어(OOP, Object Oriented Programming) - 인간 중심적 프로그래밍 패러다임 - 현실 세계의 사물을 객체로 인식하고 그 객체로부터 특징을 뽑아와 프로그래밍 하는 것 1) 특징 (1) 추상화 - 객체의 공통적인 특징을 파악해 하나의 일반적인 개념으로 다루는 것 (2) 캡슐화 - 연관있는 변수와 메소드를 묶는 것 (3) 정보은닉 - 정보를 숨겨 연산만을 통해 객체 내 변수에 접근하도록 하는 것 (4) 상속성 - 이미 정의된 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것 (5) 다형성 - 서로 다른 클래스의 객체가 같은 입력을 받았을 때, 각자의 방식으로 동작하는 것 2) 객체지향언어의 5대 원칙(SOLID) (1) 단일 책임 원칙(SRP, Single Respo.. 2020. 6. 29.