본문 바로가기
반응형

Java47

Java 기본 개념 Preface 자주 까먹고 헷갈리는 개념들만 보기 쉽게 따로 정리해둔다. - 자바는 클래스 다중 상속을 지원하지 않는다. → 인터페이스는 다중 상속이 가능하다. - 부모 클래스에 기본 생성자가 없고 매개 변수가 있는 생성자만 존재한다면 자식 생성자에서 반드시 부모 생성자 호출을 위해 super(매개값, ...)를 명시적으로 호출해야 한다. 1) super(매개값, ...)는 반드시 자식 생성자 첫 줄에 위치해야 한다. 2) 자식 클래스 내부에서 오버라이딩 된 부모 클래스의 메소드를 호출해야 한다면 명시적으로 super 키워드를 붙여 부모 메소드를 호출할 수 있다. - final 키워드 1) 클래스: 상속할 수 없는 클래스가 된다. 2) 필드: 상수가 된다. 3) 메서드: 오버라이딩할 수 없는 메서드가 된.. 2023. 9. 13.
자바가 확장한 객체 지향 Preface 이번 장에선 abstract와, final 키워드, 인터페이스에 대해 다뤘다. 대부분 '이것이 자바다' 책에서 다뤘던 내용이라 어려운 내용은 없었다. 더욱 자세한 정보는 이자바 카테고리에서 확인할 수 있다. - 추상 메서드: 선언부는 있지만 구현부가 없는 메서드 → 추상 메서드는 하위 클래스에게 오버라이딩을 강제한다. - 추상 클래스: 인스턴스(객체)를 생성할 수 없는 클래스 → 추상 클래스를 상속한 하위 클래스에선 추상 메서드를 오버라이딩해야 한다. - '클래스명( )'도 메서드이다. → 객체 생성자 메서드라 하고, 줄여서 생성자라고 부른다. - 자바는 인자가 없는 기본 생성자를 자동으로 생성해준다. → 인자가 있는 생성자를 하나라도 생성하면 자바는 기본 생성자를 만들어 주지 않는다. -.. 2023. 9. 4.
자바와 객체 지향 Preface 이번 장에선 객체 지향의 4대 특성을 알아봤다. '이것이 자바다' 책을 공부하며 이미 한 번 학습했던 내용이지만, 중간중간 기억이 잘 나지 않는 부분도 있었다. 아무래도 자바의 상속, 인터페이스, 접근제한자와 관련된 내용은 복습이 필요할 것 같다. 그래도 이것저것 공부한 개념이 많아져서 그런지 처음 객체 지향을 공부했을 때 보단 훨씬 이해가 잘 되고 쉽게 느껴졌다. 특히 추상화와 다형성의 개념을 코드를 통해 이해할 수 있게 된 것 같다. - 객체 지향은 인간 지향이다. → 객체 지향은 직관적이다. - 객체 지향의 4대 특성 1) 캡슐화(Encapsulation): 정보 은닉 2) 상속(Inheritance, Extends): 재사용 3) 추상화(Abstraction): 모델링 4) 다형성(.. 2023. 8. 31.
자바와 절차적/구조적 프로그래밍 Preface 1장에선 딱히 정리할만한 부분이 없어서 2장부터 정리를 시작한다. 작가는 코드를 STS(Spring Tool Suite)로 실행해 볼 것을 권장했지만, 대부분 매우 짧고 간단한 코드라 이미 설치되어 있는 이클립스를 사용했다. 이번 장 까지는 절차적/구조적 프로그래밍에 대한 간단한 설명, 기본적인 메모리 구조 사용 방법 등 익숙한 부분을 다뤄서 쉽게 읽고 넘어갈 수 있었다. 다만, CBD와 OOP의 차이점에 대해선 아직 정확히 구분할 수가 없다. 두 방식에 대해선 조금 더 자세히 공부할 필요가 있을 것 같다. - SOA(Service-Oriented Architecture): 서비스 지향 아키텍처 → 애플리케이션을 독립적인 서비스 단위로 분리하여 구축하고 통합하는 접근 방식 - CBD(Com.. 2023. 8. 30.
자바 객체 지향의 원리와 이해 출처 자바 객체지향의 원리와 이해 카테고리에 있는 모든 글들은 김종민 교수님의 『스프링 입문을 위한 자바 객체 지향의 원리와 이해』 (위키북스)에서 정리·요약 및 간접인용한 내용임을 밝힙니다. 2023. 8. 30.
(Fin) NIO 기반 입출력 및 네트워킹 Preface 이번 장을 끝으로 드디어 '이것이 자바다' 책 1회독을 마쳤다. 중간중간 완벽히 이해하지 못하고 넘어갔던 부분들은 필요할 때 다시 한 번 책과 인터넷을 찾아보며 공부할 생각이다. 물론 자바의 기본적인 사용 방법과 관련된 내용이었던 1권과 달리 2권은 다소 복잡한 내용들을 담고 있으므로 시간이 날 때마다 틈틈이 복습해야 할 것 같다. 1. NIO 소개 - NIO(New Input Output): java.nio 패키지에 포함되어 있는 비동기 채널 등의 네트워크 지원을 강화한 입출력 기능 - IO와 NIO의 차이점 구분 IO NIO 입출력 방식 스트림 방식 채널 방식 버퍼 방식 non-buffer buffer 비동기 방식 지원 안 함 지원 블로킹 / 넌블로킹 방식 블로킹 방식만 지원 두 방식 .. 2023. 5. 23.
네트워킹 Preface 이번 장은 네트워크와 관련된 내용들이다. 네트워크의 개념 자체는 생활코딩 강의를 통해 공부한 적이 있어 쉽게 이해할 수 있었지만, 이를 활용해 직접 코드를 작성하는 것은 쉽지 않은 것 같다. 다음 장을 공부하기 전에 직접 간단한 채팅 프로그램을 구현해볼까 한다. 5. 네트워크 기초 - 네트워크: 여러 대의 컴퓨터를 통신 회선으로 연결한 것 1) 지역 네트워크: 특정 영역에 존재하는 컴퓨터를 통신 회선으로 연결한 것 2) 인터넷: 지역 네트워크를 통신 회선으로 연결한 것 - 서버: 서비스를 제공하는 프로그램 → 클라이언트가 요청하는 내용을 처리해주고, 응답을 클라이언트로 보낸다. - 클라이언트: 서비스를 받는 프로그램 - 두 프로그램이 통신하기 위해선 연결을 요청하는 역할과 수락하는 역할이 .. 2023. 5. 12.
IO 기반 입출력 Preface 이번 장은 IO 기반의 입출력과 네트워킹에 대해 다루는데, 내용이 너무 많아 네트워크와 관련된 부분은 따로 업로드할 생각이다. 입출력에 관한 내용을 접하는 것이 이번이 처음이었다면 사용 방법을 익히는 데 시간이 꽤 걸렸을 듯하지만, 백준에서 문제를 풀어보며 이미 Scanner, BufferedReader 등 다양한 입출력 관련 메소드들을 사용해봐서 그런지 대부분의 내용을 큰 어려움 없이 이해하고 넘어갈 수 있었다. 1. 입력 스트림과 출력 스트림 - 스트림(Stream): 단일 방향으로 연속적으로 흘러가는 것 → 단방향이므로 하나의 스트림으로 IO를 모두 처리할 수 없다. 1) 입력 스트림: 프로그램이 데이터를 입력받을 때 사용하는 스트림 2) 출력 스트림: 프로그램이 데이터를 보낼 때 사.. 2023. 5. 12.
이자바 16장(스트림과 병렬 처리) 확인문제 Preface 이번 장을 제대로 이해하지 못한 것인지, 람다식과 메소드 참조 부분의 이해가 부족한 것인지, 문제를 풀다가 해결 방법을 모르겠어서 출판사에서 제공하는 확인문제 강의를 봤다. 아무래도 다음 장을 공부하기 전에 람다식 부분과 이번 장을 다시 한 번 천천히 살펴봐야 할 것 같다. - 5번 package ch16; import java.util.Arrays; import java.util.List; public class Exercise5 { public static void main(String[] args) { List list = Arrays.asList("This is a java book", "Lambda Expressions", "Java8 supports lambda expressti.. 2023. 5. 7.
스트림과 병렬 처리 Preface 이번 장의 제목에 병렬 처리도 포함되어 있지만, 간단한 개념만 소개할 뿐 대부분은 스트림에 관한 내용이었다. 스트림의 개념과 사용 방법 등 다양한 내용을 공부했는데, 람다식과 제네릭, 참조 등 앞 장 내용에 관한 지식이 요구되는 부분이 많았다. 어찌저찌 이해는 할 수 있었지만, 아무래도 해당 내용들을 직접 코드에 적용하기 위해선 많은 복습과 추가적인 공부가 필요할 듯하다. 1권은 자바의 기본적인 사용 방법에 관한 내용들이었다면, 2권에선 조금 더 딥하고 전문적인 내용을 소개하는 것 같다. 2권의 첫 장인 멀티 스레드에 관한 글을 업로드하며 말했듯 모든 내용을 완벽히 이해하려고 시간을 쓰며 스트레스를 받기보단 대충 이런 내용이 있구나 정도의 느낌만 얻은 뒤 필요할 때 직접 나만의 코드를 작성.. 2023. 5. 7.