본문 바로가기

지식/Java

[Java] 상속과 구현, 인터페이스와 추상 클래스의 차이 (extends, implement, interface, abstract class) - 상속과 구현 의 특징과 차이 상속(extends) : 자식 클래스가 부모 클래스의 메서드 등을 상속받아 사용하며 자식 클래스에서 추가 및 확장을 할 수 있습니다. 이로 인해 재사용성, 중복성의 최소화가 가능합니다. 구현(implements) : 부모 인터페이스를 자식 클래스에서 재정의하여 구현하는 것을 말하며, 상속과 달리 반드시 인터페이스의 메서드를 재정의하여 구현해야 합니다. 상속은 일반 클래스, abstract(추상) 클래스를 기반으로 구현, 구현은 인터페이스를 기반으로 구현합니다. - 추상 클래스와 인터페이스의 차이 추상 클래스와 인터페이스는 모두 반드시 부모 클래스(인터페이스)의 메서드를 재정의 하여야 합니다. 하지만 차이점은 사용 의도에 따라 다르게 구분됩니다. 예를 들어 추상 클래스 : .. 더보기
[Java] DTO, VO, Entity 란? 개발을 하다보면 UserDB를 갖고도 여러가지 비즈니스 로직을 실행할 때가 많습니다. (ex : 로그인, 회원가입, 회원이 갖고 있는 포인트 조회, 변경 등등) 우선 개념을 먼저 설명드리면 - DTO 계층간의 데이터 교환을 목적으로 한 객체(자바 빈) 입니다. 로직을 갖고 있지 않는 순수한 데이터 객체이며, getter/setter 메서드만 갖습니다. - VO DTO와 혼용되어 동일하게 사용이 되기도 하지만, DTO와의 차이점으로는 불변의 객체로 특정한 값을 나타내는 객체 입니다. 로직을 포함할 수 있습니다.(getter만 존재) - Entity Entity 클래스는 실제 DB의 테이블과 1:1로 매핑 되는 클래스입니다. - Entity를 DTO대신 사용한다면? View에서 표현하는 속성 값들의 요청이 .. 더보기
[Java] 자바 static, final , static final 차이 오늘 MyBatis를 적용하면서 static관련 에러 메세지를 보게 되었습니다. 기초적인 에러라고 생각하고 고쳐야지 하면서 생각을 하는데... 에러를 고치는데 많은 시간을 쓰게 되고 한번 정리를 해야겠다 생각하게 되었습니다. - static 이란? 정적, 고정된의 의미를 갖고 있습니다. static 키워드를 사용하여 변수, 메소드를 만들 수 있습니다. 이들을 정적 변수, 정적 메소드라고도 하며 이 둘을 합쳐 정적 멤버 혹은 클래스 멤버라고도 합니다. 말 그대로 static 변수와 메소드는 객체(인스턴스)에 소속된 멤버가 아닌 클래스에 고정된 멤버입니다. (클래스로더가 클래스를 로딩해서 초기화할 때 함께 초기화됩니다.) - static 멤버 생성 이전의 자바 컴파일 과정을 설명한 글을 쓰면서 나온 개념으로.. 더보기
[Spring] 객체지향 설계와 스프링 (SOLID) - 스프링과 객체지향의 관계 1. 스프링은 자바 언어 기반의 프레임워크입니다. 자바 언어의 가장 큰 특징은 "객체 지향 언어"입니다. 2. 스프링은 객체 지향 언어가 가진 강력한 특징을 잘 살려내는 프레임워크입니다. 3. 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크입니다. 그렇다면..... - 좋은 객체지향 프로그래밍이란? 객체 지향의 가장 큰 특징은 "다형성" 입니다. 다형성을 구현하기 위해 추상화, 캡슐화, 상속 등 다양한 개념들이 함께 합니다. - 다형성(Polymorphism) : 유연하고 변경이 용이하게 합니다. 레고 블럭을 조립하듯이, 컴퓨터의 키보드, 마우스를 갈아 끼우듯이 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법입니다. 즉, 역할과 구현으로 세.. 더보기
[Java] Call by value, Call by reference Call by value : 값에 의한 호출 - 함수가 호출될 때 메모리 공간 안에서는 임시의 공간이 생성됩니다. 그리고 함수가 종료되면 해당 공간은 사라집니다. - 함수 호출 시 전달되는 변수 값을 복사해서 함수 인자로 전달합니다. - 복사된 인자값은 함수에서만 지역적으로 사용되기 때문에 local value 속성을 가집니다. * 즉, 함수 안에서 인자값이 변경되어도, 외부 변수 값은 변경되지 않습니다. (데이터 값을 복사해서 함수로 전달하기 때문에 원본 데이터가 변경될 가능성이 없습니다.) Call by reference : 참조에 의한 호출 - 함수 호출 시 전달되는 변수의 레퍼런스를 전달합니다. - 인자값은 전달된 변수를 가르키게 되어 인자값을 변경할 경우 전달된 변수의 값도 변경되게 됩니다. *.. 더보기
[Java] 자바 컴파일 과정, JVM 기본 개념 자바는 OS에 독립적인 특징을 가지고 있습니다. 즉, Windows에서도 MacOS에서도 차이가 없이 구동이 가능하다는 특징이 있습니다. 이러한 특징을 가능하게 해주는 것이 JVM(Java Virtual Machine)입니다. 자바 컴파일 순서 1. 개발자가 자바 소스코드(.java)를 작성합니다. 2. 자바 컴파일러(Java Compiler)가 자바 소스파일을 컴파일합니다. 이때 나오는 파일은 자바 바이트 코드(.class)파일로 아직 컴퓨터가 읽을 수 없는 자바 가상머신이 이해할 수 있는 코드입니다. (추가로, 바이트 코드의 각 명령어는 1바이트 크기의 Opcode와 추가 피연산자로 이루어져 있습니다.) --------------- 3. 컴파일된 바이트 코드를 JVM의 클래스로더(Class Loade.. 더보기