728x90
반응형

JAVA/Java의 정석 7

Java의 객체지향 프로그래밍 [4] : 다형성, 추상클래스, 인터페이스, 내부 클래스

▶ 다형성이란? 상속과 함께 객체지향개념에서 중요한 특징 중 하나이다. 객체지향개념에서 다형성이란 '여러 가지 형태를 가질 수 있는 능력'을 의미한다. 자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 프로그램적으로 구현하였다. 이를 좀 더 구체적으로 말하자면, 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 한 것이다. class Tv{ boolean power; int channel; void power() { power = !power; } void channelUp() { ++channel; } void channelDown() { --channel; } } class CaptionTv extends Tv{ String text; void..

JAVA/Java의 정석 2023.06.26

Java의 객체지향 프로그래밍 [3] : 상속, 오버라이딩, 제어자

▶ 상속(inheritance) 상속이란, 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 상속을 통해서 클래스를 작성하면 보다 적은 양의 코드로 새로운 클래스를 작성할 수 있고 코드를 공통적으로 관리할 수 있기 때문에 코드의 추가 및 변경이 매우 용이하다. 자바에서 상속을 구현하는 방법은 간단하다. 새로 작성하고자 하는 클래스의 이름 뒤에 상속받고자 하는 클래스의 이름을 키워드 'extends'와 함게 작성해주면 된다. class Child extends Parent{ // ... } 상속에서 - 생성자와 초기화 블럭은 상속되지 않는다. 멤버만 상속된다. - 자손 클래스의 멤버 개수는 조상 클래스보다 항상 같거나 많다. ▶ 단일 상속(single inheritance) 다른 객체지향언어인 ..

JAVA/Java의 정석 2023.06.24

Java의 객체지향 프로그래밍 [2] : 오버로딩(overloading)이란, 변수의 초기화

▶ 오버로딩이란? 메서드도 변수와 마찬가지로 같은 클래스 내에서 서로 구별될 수 있어야 하기 때문에 각기 다른 이름을 가져야 한다. 그러나 자바에서는 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메서드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메서드를 정의할 수 있다. 이처럼, 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 '메서드 오버로딩(method overloading)' 또는 간단히 '오버로딩(overloading)'이라 한다. ▶ 오버로딩의 조건 같은 이름의 메서드를 정의한다고 해서 무조건 오버로딩인 것은 아니다. 오버로딩이 성립하기 위해서는 다음과 같은 조건을 만족해야한다. 메서드 이름이 같아야한다. 매개변수의 개수 또는 타입이 달라야한다..

JAVA/Java의 정석 2023.06.22

Java의 객체지향 프로그래밍 [1] : 클래스 변수, 인스턴스 변수, JVM의 메모리 구조, 클래스 메서드와 인스턴스 메서드

객체지향이론의 기본 개념은 '실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물간의 상호작용이다.'라는 것이다. 실제 사물의 속성과 기능을 분석한 다음, 데이터(변수)와 함수로 정의함으로써 실제 세계를 컴퓨터 속에 옮겨 놓은 것과 같은 가상 세계를 구현하고 이 가상세계에서 모의실험을 함으로써 많은 시간과 비용을 절약할 수 있다. ▶ 객체지향 언어 객체지향 언어는 기존의 프로그래밍 언어와 다른 전혀 새로운 것이 아니라, 기존의 프로그래밍 언어에 몇 가지 새로운 규칙을 추가한 보다 발전된 형태의 것이다. 이러한 규칙들을 이용해서 코드 간에 서로 관계를 맺어 줌으로써 보다 유기적으로 프로그램을 구성하는 것이 가능해졌다. 1. 코드의 재사용성이 높다. : 새로운 코드를 작성할 때 기존의 코..

JAVA/Java의 정석 2023.06.22

JIT 컴파일러와 Java Hotspot

▶ JIT 컴파일러란? JIT(Just-In-Time) 컴파일러는 JVM(Java Virtual Machine)에서 사용되는 컴파일러이다. JIT 컴파일러는 프로그램의 실행 시점에 바이트코드를 기계어로 변환하여 실행 속도를 향상시키는 역할을 수행한다. ▶ JIT 컴파일러 등장 배경 Java 언어는 컴파일러에 의해 바이트코드로 변환되며, JVM은 이러한 바이트코드를 인터프리터를 통해 한 줄씩 해석하고 실행한다. 하지만 인터프리터 방식은 실행속도가 느릴 수 있다. 이를 개선하기 위해 도입된 것이 JIT 컴파일러이다. ▶ JIT 컴파일러 동작 과정 JIT 컴파이러는 프로그램이 실행되는 동안 인터프리터가 반복적으로 실행되는 코드를 감지하고, 이를 동적으로 기계어로 컴파일하여 캐시에 저장한다. 이렇게 컴파일된 기..

JAVA/Java의 정석 2023.06.18

JVM이란? (Java Virtual Machine) JVM의 구조와 장점, 단점

▶ JVM (Java Virtual Machine) JVM은 'Java Virtual Machine'을 줄인 것으로 직역하면 '자바를 실행하기 위한 가상 기계'라고 할 수 있다. 자바로 작성된 애플리케이션은 모두 이 JVM에서만 실행되기 때문에, 자바 애플리케이션이 실행되기 위해서는 반드시 JVM이 필요하다. 일반 애플리케이션의 코드는 OS만 거치고 하드웨어로 전달되는데 비해 Java애플리케이션은 JVM을 한 번 더 거치기 때문에, 그리고 하드웨어에 맞게 완전히 컴파일된 상태가 아니고 실행 시에 해석(interpret)되기 때문에 속도가 느리다는 단점을 가지고 있다. 그러나 요즘엔 바이트코드(컴파일된 자바코드)를 하드웨어의 기계어로 바로 변환해주는 JIT 컴파일러와 향상된 최적화 기술이 적용되어서 속도의..

JAVA/Java의 정석 2023.06.16

자바(Java)언어의 특징 - Garbage Collection, 동적 로딩, 네트워크 분산처리

자바의 가장 중요한 특징은 운영체제(Operating System)에 독립적이라는 것이다. 자바로 작성된 프로그램은 운영체제의 종류에 관계없이 실행이 가능하기 때문에, 운영체제에 따라 프로그램을 전혀 변경하지 않고도 실행이 가능하다. ▶ 자바 언어의 특징 1. 운영체제에 독립적이다. 기존의 언어는 한 운영체제에 맞게 개발된 프로그램을 다른 종류의 운양체제에 적용하기 위해서는 많은 노력이 필요하겠지만, 자바에서는 더 이상 그런 노력을 하지 않아도 된다. 이것은 일종의 에뮬레이터인 자바가상머신(JVM)을 통해서 가능한 것인데, 자바 응용프로그램은 운영체제나 하드웨어가 아닌 JVM하고만 통신하고 JVM이 자바 응용프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달한다. 자바로 작성..

JAVA/Java의 정석 2023.06.15
728x90
반응형