본문 바로가기

Programming/Java20

[Java] 15. 추상 클래스 1. 개요 Abstract, '추상적'이라는 의미를 가지고 있는 단어이다. 추상적이라는 것은 어떠한 사물이 직접 경험하거나 지각할 수 있는 일정한 형태나 성질을 갖추지 않은 것이다. 즉, 구체적인 것이 존재하지 않고 막연하기만 한 것을 추상적이라고 한다. 프로그래밍, 자바에서도 이와 비슷하게 구체적인 형태가 존재하지 않은 클래스 문법을 '추상 클래스(Abstract Class)'라고 한다. 2. 추상 클래스 (Abstract Class) ① 추상 클래스의 정의 - 미완성된 설계도(클래스, class) - 미완성된 메서드, 추상 메서드를 가진 클래스 - 클래스 앞에 추상적이라는 의미를 가진 'abstract' 단어를 붙여서 정의한다. - new() 연산자를 통해서 객체를 만들 수 없지만, 상속을 통해서 추.. 2023. 1. 26.
[Java] 14. 다형성 (Polymorphism) 1. 개요 이번에 정리한 것은 자바, 객체 지향 프로그래밍 언어로써 가지는 특징 중 하나인 '다형성'에 대한 것이다. 처음에는 객체 지향 프로그래밍 언어 특징 전체를 정리한 게시글에 이 내용을 추가하는 것을 고려해 봤지만 정리를 하다 보니 처음에 생각한 것보다 분량이 많아서 그냥 개별적으로 추가하기로 했다. 객체 지향 프로그래밍 언어에 대해 정리한 것은 아래 링크를 통해서 확인하면 될 것이다. https://rclogstorage.tistory.com/m/14 [Java] 0 - (1). 객체 지향 프로그래밍이란 무엇인가 앞에서 자바의 정의와 특징들을 설명할 때, 자바의 특징인 '객체지향 언어'라는 부분에 대해 설명하지 않고 넘어갔었다. 이번에는 객체 지향 언어, 객체 지향 프로그래밍에 대해 정리해보겠다.. 2023. 1. 20.
[Java] 13. 오버로딩 (Overloading) 1. 개요 자바 생성자 게시물에서 this 키워드를 설명할 때, 오버로딩의 정의를 간략하게 설명하고 상세한 것은 추후에 하겠다고 하며 넘어간 적이 있었다. 이번엔 오버로딩에 대해 좀 더 상세하게 설명해 보도록 하겠다. 2. Overloading ① 오버로딩의 정의 - 자바에서 메서드를 다루는 기법 중 하나 - Overloading: 과적하다, 너무 많이 주다. (사전적인 의미) - 매개변수의 개수, 타입을 다르게 해서 같은 이름의 메서드가 존재할 수 있게 하는 기법 - 오버로딩, 메서드 오버로딩은 객체 지향 프로그래밍 언어의 특징 중 하나인 '다형성(Polymorphism)'을 구현하는 방법 중 하나이다. 아래는 메서드 오버로딩의 성립 조건이다. 자바로 프로그래밍을 하다 보면 오버로딩을 활용할 일도 많으.. 2023. 1. 17.
[Java] 12. 캡슐화와 접근 제어자 1. 개요 이번에는 객체 지향 프로그래밍의 특징 중 하나인 캡슐화에 대해서 정리해 보겠다. https://rclogstorage.tistory.com/m/14 [Java] 0 - (1). 객체 지향 프로그래밍이란 무엇인가 앞에서 자바의 정의와 특징들을 설명할 때, 자바의 특징인 '객체지향 언어'라는 부분에 대해 설명하지 않고 넘어갔었다. 이번에는 객체 지향 언어, 객체 지향 프로그래밍에 대해 정리해보겠다. rclogstorage.tistory.com 사실 캡슐화는 앞에서 객체 지향 언어의 특징을 정리할 때 한 번 다뤄본 적이 있었지만 상세하게 다루지는 않고 그냥 이런 것이 있다 식으로 넘어갔었다. 이번에는 캡슐화의 정의와 캡슐화를 가장 잘 표현할 수 있는 '접근 제어자'도 같이 다뤄보도록 하겠다. 2. .. 2023. 1. 16.
[Java] 11. 생성자 (Constructor) 1. 생성자 ① 생성자의 정의 - 사용자가 new 연산자를 통해서 객체를 생성할 때, 제일 먼저 호출되는 일종의 메서드이다. ② 생성자의 특징과 역할 - 생성자는 return 타입이 존재하지 않는다. - 개발자가 생성자를 만들지 않은 상태로 컴파일을 하면 매개변수가 없는 생성자가 자동으로 생성된다. 이때 매개변수가 없는 생성자를 기본 생성자라고 한다. - 클래스가 객체화될 때, 객체의 멤버 변수를 초기화하는 역할을 한다. - 생성자 메서드는 자바 프로그램이 실행될 때 딱 한 번만 실행된다. ③ 일반 메서드, 생성자 메서드 비교 //일반 메소드 class Example { int add(int a, int b){ //'return 타입''메소드 명'(매개변수){/*명령 입력*/} } } //생성자 메소드 .. 2023. 1. 16.
[Java] 10. 상속 (Inheritance) 1. 상속 (Inheritance) ① 상속의 정의 상속의 사전적인 정의는 "부모가 가진 것을 자식에게 물려주는 것."이라고 할 수 있다. 프로그래밍에서의 상속도 이러한 기능을 가지고 있다.상속은 객체 지향 프로그래밍에서 제공되는 함수/데이터 모듈화의 일종으로피상속 객체의 데이터나 함수를 상속 객체가 그대로 이어받아서 쓸수 있는 기능이다. 여기서 데이터와 함수를 이어주는 피상속 객체를 '부모 클래스' 이를 상속받는 상속 객체를 '자식 클래스'라고 한다. ② 상속 사용 방법 프로그래밍에서 상속 기능을 사용하는 방법은 아래와 같다. class 동물 { } class 사람 extends 동물 { } //class extends //부모 클래스: 동물 //자식 클래스: 사람 //사람 class는 동물 class.. 2022. 12. 22.
[Java] 9. static 1. 'static' ① 'static'의 정의 - Java에서 사용되는 키워드 중 하나 - Class 내부의 변수나 함수에 'static'을 붙이는 것으로 해당 변수나 함수는 객체를 생성하지 않고 바로 사용할 수 있다. - 객체 생성 없이 바로 사용할 수 있으므로 프로그램 내에서 공통적으로 사용되는 데이터를 관리할 때 이용한다. //'static' 사용 예시 public class Main { public static void main(String[] args) { Sample.A = 15; Sample.talk(); //별도의 인스턴스 생성 없이 //'Sample' class가 가진 변수와 함수 사용가능 System.out.printf("A의 값: %d", Sample.A); } } class Sam.. 2022. 12. 21.
[Java] 8. Scanner 1. 개요 이번에 정리한 것은 자바에서 사용되는 여러가지 입력 방법 중 하나인 Scanner 클래스에 대한 것이다. 바로 Scanner 클래스가 가진 특징을 확인하고, 예제문제로 넘어가도록 하겠다. 2. Scanner 클래스 ① Scanner의 특징 - 정수, 실수, 문자열과 같은 기본적인 데이터 타입을 가진 값들을 Scanner가 가진 메소드를 사용해서 입력받을 수 있다. - Scanner를 사용할 때는 'java.util' 패키지에서 Scanner 클래스와 관련된 패키지를 호출해야만 사용할 수 있다. (자바에서 사용되는 대부분의 클래스들은 lang 패키지가 아니라면 import를 통해서 호출해야만 한다.) - 공백(띄어쓰기)이나 ' ', '\n'과 같은 줄바꿈을 기준으로 데이터를 읽는다. 이를 통해서.. 2022. 12. 4.
[Java] 함수, 메소드 1. 개요 저번 주에 클래스와 객체에 대한 글을 티스토리에 올리고 나서 주말에 김장을 하고, 핸드폰으로 내가 올렸던 글을 다시 읽다가 궁금증이 하나 생겼다. 메소드는 개념적으로도 구조적으로도 함수와 똑같은데 그러면 "이 둘의 차이가 무엇일까?" 라는 생각이었다. 일단 결론부터 말하자면 메소드는 클래스에 포함된 함수이다. 왜 이러한 결론에 도달했는 지를 말하기 전에 함수의 정의를 먼저 정리해보겠다. 2. 함수의 정의 ① 함수의 정의 - 하나의 특별한 목적의 작업을 수행하기 위해서 독립적으로 설계된 프로그램 코드의 집합 ② 함수를 사용하는 이유 - 함수를 사용하면 반복적인 프로그래밍을 피할 수 있다. - 프로그램에서 특정한 작업을 여러 번 반복해야 한다면 해당 작업을 수행하는 함수를 작성하고 프로그램이 그 .. 2022. 11. 30.