개발 공부/자바 기본기 28

갑자기 떠오른 ? 이해해버린 ? Interface

그냥 클래스에서 계속해서 수정해서 쓰면되는데 왜 굳이 인터페이스를 쓸까 그냥 추상화에서 쓰면 되는거 아닐까 ?이론적으론 다중상속이 가능해서 라는데  와닿지는 않았다. 근데 갑자기 생각이 든것이 Discount라는 할인정책 인터페이스를 생성했다고 가정하고, DIscount 에서 RateDiscount라는 클래스를 생성해서 할인을 적용시킨다고 생각한다. 그리고 나중에 리팩토링을 걸쳐서 새로운 할인정책을 사용한다고 했을때, Discount에서 새로운 클래스를 생성한 후 FIxDiscount 라는 새로운 클래스를 생성해서 오버라이딩해서 사용한다고 하면 교체가 용이해진다...괜히 뿌듯하당 ....

생성자

생성자 다시 한번 복기하고 넘어가기🙃 Constructor :cmd + n을 누르면 Constructor를 누르면 생성할 수 있다. intelliJ기준클래스 이름과 동일한package model;public class adb {public adb() {}}이러한 형식으로 생성자가 클래스와 이름이 동일하다.생성자는 다른 메소드와는 다르게 리턴 타입이 없다.객체가 생성될 때 자동으로 한번 호출된다.오버로딩 : 매개변수 조건에 따라 여러개를 작성할 수 있다.여기서 this. 는 무슨역할일까 레퍼런스 변수인데, 자신의 객체에 접근할 때 사용된다고 알아두면된다.즉 멤버변수와 매개변수의 이름이 동일할 때 이를 구분하기 위해 사용된다.이제 Super도 알아보자, 자신이 상속받은 부모 클래스에 대한 레퍼런스 변수로,..

NEXT _ STEP 사다리 미션에 앞서 공부하는 정팩메..

정적팩토리메서드 들어보기는 자주 들어봤지만 실제로 사용해본적은 없었던것 같다. 용도와 역할을 제대로 사용하고 사다리에 적용해보고 싶어서 따로 공부를 해서 완벽하게 이해를 한상태로 적용을 할 것이다. -Statiac Factory Method : 정적 팩토리 메서드 팩토리라는 용어가 익숙하지 않았다. Gof 디자인 패턴중 팩토리패턴에서 유래한 단어이다. Gof 정처기 준비하면서 들어봤던 말인데 이러면 또 디자인패턴도 공부해봐야지 어차피 정처기 시험보려면 알아둬야하니까GoF디자인 패턴을 분류하는 기준은 두 가지이다. 1. 목적에따라 생성 구조 행동 3가지로 나눈다.각각의 패턴이 어떤 일을 하기 위한 것인지 관한 것인데, 생성 패턴 : 객체의 생성 과정에 관여 추상팩토리: 구체적인 클래스를 지정하지 않고 인..

Stream, map, collect 알고쓰자.

스트림을 사용하는 이유 :  1. 간결하기 읽기 쉬운 코드 : 스틀미을 사용하면 데이터 처리 로직을 간결하게 작성할 수 있다 . 루프와 조건문을 사용하는 대신 스트림 연산을 체이닝 하여 작업을 쉽게 표현할 수 있다 . 2. 병렬 처리 : 스트림은 손쉽게 병렬 처리가 가능하다. parallelStream()을 사용하면 병렬 처리를 간단하게 구현할 수 있어, 성능 향상에 도움이 된다.  3. 풍부한 연산 지원 : 스트림 API는 다양한 중간 연산 ( map, filter, sorted) 최종 연산 (collect, forEach, reduce) 등  제공하여 데이터 변환과 수집을 쉽게 처리할 . 수 있다. import java.util.Arrays;import java.util.List;import java..

Java Stack, Thread

Stack:  쌓다라는 의미를 내포하고있다. 즉 상자에 물건을 쌓아 올리듯이 데이터를 쌓는 자료 구조  이다.LIFO(Last In First Out)  구조를 가지고 있다. 마지막에 넣은 것이 가장 먼저 빠져나온다. Queue(큐)는 선입 선출 (FIFO) 형태를 가지고 있다.  두 구조가 양대산맥처럼 사용한다. 마지막으로 사용이 끝난 지역변수를 바로바로 쳐내버리는 Stack은 매우 효율적으로 메모리를 사용한다. 프로그래밍 메모리 영역에 쓰여진다스택은 Thread Safe한데, 어떤 공유 자원에 여러 쓰레드가 동시에 접근해도, 프로그램 실행에 문제가 없는 상태이다.정보처리기사에서도 나오는 내용이다. Thread란 ? 프로세스 내에서 실제로 작업을 수행하는 주체 모든 프로세스에는 한 개 이상의 스레드가 ..

스트림 Streams

스트림은 데이터의 흐름이다. 배열 또는 컬렉션 인스턴스에 함수 여러 개를 조합해서 원하는 결과를 가공하는 것 그래서 람다를 이용해서 코드의 양을 줄이고 간결하게 표현할 수 있다.그리고 병렬처리가 가능한 것이 장점이다. 쓰레드를 이용해 많은 요소들을 빠르게 처리할 수 있다.1. 배열 스트림 : 배열 또는 컬렉션 인스턴스를 이용해서 생성한다.public class StreamArr { String[] arr=new String[]{"1","2","3"}; Stream str= Arrays.stream(arr); Stream strOfArrPart=Arrays.stream(arr,0,3);} 2.  Stream.builderpublic class StreamArr { Stream buil..

Part 2 - 7 8 9 10

10. 접근 제어 지시자(access modifier)와 정보은닉(infomation hiding) 접근 제어 지시자 (accesss modifier) 클래스 외부에서 클래스의 멤버 변수, 메서드, 생성자를 사용할 수 있는지 여부를 지정하는 키워드 private : 같은 클래스 내부에서만 접근 가능 ( 외부 클래스, 상속 관계의 클래스에서도 접근 불가) 아무것도 없음 (default) : 같은 패키지 내부에서만 접근 가능 ( 상속 관계라도 패키지가 다르면 접근 불가) protected : 같은 패키지나 상속관계의 클래스에서 접근 가능하고 그 외 외부에서는 접근 할 수 없음 public : 클래스의 외부 어디서나 접근 할 수 있음 get()/ set() 메서드 Intellij 에서 get set 입력해서 ..