sagecode 57

[JAVA] 추상클래스와 인터페이스의 차이점?

추상클래스의 경우 이전 글에서 '상속'을 포스트 할 때 설명을 했으니 인터페이스에 대한 설명을 먼저 시작하겠다. 1. 인터페이스인터페이스(Interface)는 개발 코드와 객체가 서로 통신하는 접점 역할을 합니다. 개발 코드가 인터페이스의 메소드를 호출하면 인터페이스는 객체의 메소드를 호출시킵니다. 그렇기 때문에, 개발 코드는 객체 내부의 구조를 알 필요가 없고 인터페이스의 메소드만 알고 있으면 됩니다. 인터페이스 선언 : 인터페이스는 클래스와 선언하는 방법이 같다. 클래스는 필드, 생성자, 메소드를 구성 멤버로 가지는데 비해, 인터페이스는 상수 필드와 추상 메소드만을 구성 멤버로 가진다. 또한, 객체를 생성할 수 없기 때문에 생성자를 가질 수 없다.interface RemoteControl {// 상수..

JAVA 2024.12.01

[JAVA] 상속, 다형성, 추상 클래스

1. 상속이란?객체 지향 프로그래밍에서 부모 클래스의 멤버를 자식 클래스에게 물려주는 것을 상속이라고 한다.상속은 이미 잘 개발된 클래스를 재사용해서 새로운 클래스를 만들기 때문에 중복되는 코드를 줄여준다.클래스 상속 : 현실에서 상속은 부모가 자식을 선택해서 물려주지만, 프로그램에서는 자식이 부모를 선택합니다.자식 클래스를 선언할 때 어떤 부모 클래스를 상속받을 것인지 결정하고, 선택된 부모 클래스는 extends 뒤에 기술한다.자식 클래스는 여러 개의 부모 클래스를 상속할 수 없다.부모 클래스에서 private를 가진 필드와 메소드는 상속 대상에서 제외된다.class 자식클래스 extends 부모클래스 { ...}부모 생성자 호출 : Java에서 자식 객체를 생성하면, 부모 객체가 먼저 형성되고 그다..

JAVA 2024.11.26

[JAVA] JVM 메모리 사용 영역

JAVA 코드가 어떻게 실행되는지, 그 데이터들이 어떤곳에 저장되는지 알기 위해서는 JVM을 먼저 이해해야 한다. 1. JVM(JAVA Virtual Machine)위 그림은 Java 코드가 실행되는 과정이다.Java 코드는 Java Compiler를 통해 바이트코드(.class)를 생성한다.바이트코드(.class)를 JVM에 있는 Class Loader에 전달되고 JVM이 프로그램을 실행한다.JVM이 프로그램을 실행할 때, 필요한 메모리들은 어디에 저장되고 어떤 구조로 생겼는지 알아보자.2. 메모리 사용 영역JVM 내의 메모리 영역은 JVM Run-time Data Area라고 한다. 크게 5가지 영역으로 나뉘는데, 메소드 영역, 힙 영역, 스택 영역, PC 레지스터 영역, 네이티브 메소드 스택 영역으..

JAVA 2024.11.26

[JAVA] 디자인패턴 - 싱글톤 패턴(Singleton Pattern)을 알아보자

1. 싱글톤 패턴(Singleton Pattern)객체를 생성했을 때, 같은 이름의 객체라면 오직 하나만 생성되는 패턴이다.왜쓰는가? 메모리 절약을 위해 인스턴스가 필요할 때, 새로 생성하지 않고 똑같은 인스턴스를 가져온다.보통 리소스를 많이 요구하는 객체일 때 자주 사용된다.class Singleton { private static Singleton instance; private Singleton() { // 생성자 } private static Singleton getInstance() { if instance == NULL instance = new Singleton(); return instance..

JAVA 2024.11.23

[JAVA] 객체지향 언어란 무엇인가? - 객체, 인스턴스, 클래스, OOL특징

우리가 프로그래밍 언어를 배울 때, 객체지향 언어라는 말을 많이 들어봤을 것이다. 그럼 대체 객체지향 언어는 무엇일까? 1. 객체우선 객체에 대한 정의를 해야한다. 객체 : 현실세계에 존재하거나 추상적으로 생각하는 것 모든 것을 얘기한다.객체 모델링 : 현실 세계 객체의 속성과 동작을 추려내어 소프트웨어 객체의 필드와 메소드로 정의하는 과정이다.2. 클래스현실에서의 객체는 설계도를 바탕으로 만들어진다. 메모리에서 사용하고 싶은 객체가 있다면 설계도를 바탕으로 해당 객체를 만들어야 되는데 그 설계도를 JAVA에서는 클래스라고 한다.클래스(Class) : 객체를 생성하기 위한 설계도 역할을 하고, 프로그램에서 사용할 객체의 필드와 메소드가 정의 되어 있다.인스턴스(Instance) : 클래스로부터 만들어진 ..

JAVA 2024.11.22

[JAVA] JAVA 기본 문법 - 참조 타입과 참조 변수

1. 참조 타입과 참조 변수참조 타입 : 배열, 열거, 클래스, 인터페이스 변수 등 메모리의 번지를 변수안에 저장하는 타입 A. 메모리 사용 영역 : JVM은 메모리 영역이 "메소드 영역", "힙 영역", "JVM 스택" 으로 구분된다.메소드 영역 : JVM이 시작할 때, 모든 스레드가 공유하는 영역입니다. 클래스들을 class loader로 읽어 클래스별로 static field와 constant, method, constructor 로 분류해서 저장합니다.힙 영역 : 객체와 배열이 생성되는 영역. 여기에 생성된 객체와 배열은 JVM 스택 영역의 변수나 다른 객체의 필드에서 참조합JVM 스택 영역 : 메소드를 호출할 때마다 프레임을 추가하고 메소드가 종료되면 해달 프레임을 제거하는 동작을 수행합니다. ..

JAVA 2024.11.19

[JAVA] JAVA 기본 문법 - 변수

내가 "혼자 공부하는 자바" 라는 책을 읽으면서 공부한 JAVA 문법에 대해서 잘 모르는 부분들을 정리해 보았다1. 변수A. 타입변환 : 데이터 타입을 다른 데이터 타입으로 변화하는 것 기본 타입을 허용 범위 크기순으로 정리하면 다음과 같다.byte  자동 타입 변환 : 허용 범위가 작은 타입이 허용 범위가 큰 타입으로 저장될 때 발생byte byteValue = 10;int intValue = byteValue; // 자동 타입 변환됨int 타입이 byte 타입보다 허용 범위가 더 크기 때문에 자동 타입 변환이 일어납니다.char charValue = 'A'int intValue = charValue; // 65가 저장됨char 타입의 경우 int 타입으로 자동 타입 변환되면 유니코드 값이 int 타입..

JAVA 2024.11.19