전체 글 149

인터페이스와 추상 클래스의 차이

인터페이스와 추상화 모두 메서드를 재정의(Override)하여 사용하기에 조금 헷갈릴 수 있다. 하지만 전혀다른것이며 확실한 차이가 있다. 인터페이스 클래스가 인스턴스의 청사진이라면, 인터페이스는 클래스의 청사진이다. 인터페이스는 클래스의 메서드들의 목록과 동작을 정의 하며 인터페이스를 구현한 클래스는 디폴트 메서드를 제외한 인터페이스의 모든 메서드를 재정의해야 한다. 추상 클래스 추상 클래스는 추상화를 통해 부모 클래스는 공통적인 속성을, 자식 클래스는 각자의 속성을 추가하여 사용한다. 이를 통해 코드의 중복을 줄이고 유지보수성을 높일 수 있다. 재정의하여 사용할 메서드는 추상 메서드(Abstract Method)로 구현하며 반드시 구현해야 한다. 정리하자면, 인터페이스는 클래스 간의 계약을 정의하고 ..

Java 2023.05.25

인터페이스

인터페이스란? 자바에서 인터페이스는 두 가지의 의미가 있다. 두 객체를 연결해 주는 다리 역할 상속관계가 없는 다른 클래스들이 동일한 메서드(동일한 행위)를 구현해야 할 때 사용하는 메서드 이 글에선 2번의 인터페이스에 대해 설명한다. 인터페이스는 다중 상속이 가능하다. 인터페이스의 추상 메서드는 구현될 때 반드시 오버라이딩 되어야 한다. 만약 인터페이스의 추상 메서드를 일부만 구현해야 한다면 해당 클래스를 추상 클래스로 변경하여 사용할 수 있다. 아래에 예시 코드를 작성함. 모든 멤버는 static final, 모드 메서드는 public abstract 이어야 한다. 생략 가능하며 생략 시 컴파일러가 자동으로 추가해 준다.(static메서드와 default메서드 제외) 선언방법: public inter..

Java 2023.05.25

추상 클래스

추상 클래스란? 다른 클래스들 사이에서 공통된 특성과 동작을 가지는 메서드들을 정의합니다. 일반 클래스와 다르게 인스턴스화(직접적으로 사용하여 객체를 생성)할 수 없습니다. 주로 자식 클래스에게 공통된 인터페이스를 제공하는데 사용됩니다. 공통된 인터페이스를 가지고 있음을 보장하여 코드의 재사용성과 유지 보수성을 높일 수 있습니다. 추상 클래스를 상속받은 클래스는 추상 클래스의 추상 메서드를 구현(overriding)해야만 인스턴스화 할 수 있습니다. 추상 클래스 선언 시, abstract 키워드를 사용해 선언해 사용합니다. 추상 메서드는 메서드의 시그니처(이름, 매개변수, 반환 타입)만을 선언하며 구현부(중괄호, { })를 작성하지 않습니다. 아래는 예시 코드입니다. // 추상 클래스 정의 abstrac..

Java 2023.05.25

super와 super()

super 상위 클래스와 하위 클래스에 동일한 이름을 가진 멤버가 있는 경우,하위 클래스에서 상위 클래스의 멤버(필드 또는 메서드)에 접근하기 위해 사용 상위 클래스의 멤버를 재정의(오버라이딩)한 경우에도 상위 클래스의 멤버에 접근할 수 있음 super() 하위 클래스의 생성자에서 상위 클래스의 생성자를 호출하는 데 사용 하위 클래스의 생성자가 호출될 때, 암묵적으로 상위 클래스의 기본 생성자가 호출되지만, 상위 클래스의 다른 생성자를 호출하기 위해서는 super()를 사용해야 한다. 하위 클래스의 생성자 코드 블록에서 첫 번째 줄에 위치해야 하며, 이전에 다른 문장이 올 수 없다 이를 통해 상위 클래스의 초기화 작업을 수행할 수 있음

Java 2023.05.24

생성자란? this와 this()의 차이

생성자란 인스턴스 생성 시 호출되어 객체를 초기화하는 역할을 수행한다 기본 생성자 : 생성자 선언 시(new();), 괄호안에 아무것도 넣지 않는 생성자 this와 this() this와 this()는 이름만 비슷할 뿐, 전혀 다른 역할을 수행한다 우선 this는 인스턴스 변수와 매개변수 이름이 같을 경우, 인스턴스 변수를 호출할 때 사용한다 class Car { // 필드에 선언된 변수를 인스턴스 변수라고 함 String name; String color; int speed; //괄호안에 있는 변수들을 매개변수라 함 Car(String name, String color, int speed){ //this를 통해 인스턴스 변수를 명시적으로 선언 //매개변수로 전달받은 값을 인스턴스 변수에 대입 this...

Java 2023.05.24

인스턴스 멤버와 클래스 멤버

멤버란? 클래스의 구성하는 주요 요소인 필드, 생성자, 메소드 중 필드와 메서드를 합쳐 멤버라고 한다 선언하는 방법에 따라 멤버는 인스턴스 멤버와 클래스 멤버가 있다 인스턴스 멤버 인스턴스 멤버는 객체를 생성(인스턴스화)하여야 사용할 수 있다 인스턴스 변수들은 객체마다 독립적으로 저장된다 메서드는 메모리 효율을 위해 메서드 영역에 딱 한 번만 저장되고, 모든 인스턴스들이 공유하여 사용한다 클래스 멤버 클래스 멤버란 메서드 영역의 클래스와 같은 위치에 고정적으로 위치하고 있는 멤버를 의미한다 클래스는 클래스 로더에 의해 메서드 영역에 저장되어 사용된다 클래스 멤버로 만들기 위해서 static 키워드를 사용한다 클래스 멤버는 호출 시, 클래스명. 으로 호출 가능하다 아래와 같은 상황 시 클래스 멤버를 사용하..

Java 2023.05.24

배열합치기, 컬렉션 합치기

스프레드 문법 : 배열을 확장하거나 병합하는 데 사용되는 문법 ... (세 개의 점)을 사용하여 표현한다. 사용 예시 int[] array1 = {1, 2, 3}; int[] array2 = {4, 5, 6}; int[] combinedArray = [...array1, ...array2]; // 배열 전개 // 결과: [1, 2, 3, 4, 5, 6] 컬렉션 합치기 (Collection Concatenation) : addAll 문법을 이용하여 합칠 수 있음 사용예시 List list1 = Arrays.asList(1, 2, 3); List list2 = Arrays.asList(4, 5, 6); List combinedList = new ArrayList(list1); combinedList.addA..

Java 2023.05.24

자바의 특징 및 JVM 동작 과정

자바는 1990년대에 발표되었고, 어디서나 동작 가능하며, 가장 많이 쓰이는 개발언어이다 java의 특징 공통 실행환경(JVM)이 있어서 다양한 OS에서도 실행이 가능하다. 코드 이해 및 유지보수가 쉽다. 안정성이 높아 오류를 방지하고 보안상 안전하다. 네트워크 및 DB 연결 등 작업을 처리하는 API를 제공하여 대규모 앱 개발에 유용하다. 다양한 개발도구와 라이브러리를 사용 가능하다. 자바 가상 머신(JVM; Java Virtual Machine)이란? java로 작성된 앱은 JVM에서만 실행되기에 실행을 위해서는 필수이다. OS에 종속적이기 때문에 해당 OS에서 실행가능한 JVM이 필요하다. 자바 동작 과정 개발자가 java로 코드 작성(자바 클래스 파일(.java) 생성) 자바 컴파일러가 개발자가 ..

Java 2023.05.22