![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bkwQwp/btrK4FRkVZD/M0KTkjJTBUJAtGdwmVKkMK/img.png)
1. 다형성이란? 부모-자식 상속 관계에 있는 클래스에서 상위 클래스가 동일한 메시지로 하위 클래스들을 서로 다르게 동작시키는 객체 지향 원리입니다. 다형성을 활용하면부모 클래스가 자식 클래스의 동작 방식을 알수 없어도 오버라이딩을 통해 자식 클래스를 접근할 수 있습니다. 그렇다면 어떻게 부모가 자식이 어떤 일을 하는 지 몰라도, 자식 멤버 함수를 호출시킬 수 있을 까요? 이유는 동적 바인딩 때문입니다. 동적바인딩이란, 메서드가 실행 시점에서 성격이 결정되는 바인딩인데요. 프로그램의 컴파일 시점에 부모 클래스는 자신의 멤버 함수밖에 접근할 수 없으나,실행 시점에 동적 바인딩이 일어나 부모클래스가 자식 클래스의 멤버함수를 접근하여 실행할 수 있습니다. 2. 다형성 장점 간편한 유지보수 개발자가 여러 객체를..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/ljYwS/btrK1qUY9x2/N4FJ1AWkuNAHoSHouw4nZ0/img.png)
IoC(Inversion of Control) IoC(Inversion of Control)를 해석하면 제어의 역전입니다. 쉽게 말해 객체를 개발자 본인이 제어하는 것이 아닌 스프링 컨테이너에게 제어권이 넘어가는 것을 뜻합니다. 아래는 일반적으로 자바에서 객체를 생성하여 객체를 제어하는 코드입니다. class ClassA { } class ClassB{ private ClassA a; ClassB() { this.a = new ClassA(); } } 보시다시피 개발자 본인이 new 연산자를 통해 직접 객체를 생성하고 변수에 할당해줘야 하는 방식입니다. 스프링의 경우 어떨까요? 아래코드는 스프링에서의 객체 할당 방식입니다. @Component class ClassA { } class ClassB{ @Au..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/brk8hD/btrK5aQOr9J/Wh8SMgndnK0CmQyQodc74k/img.png)
# Today I Learned 💡 스프링 심화강의에서 역할을 따로 나누지 않고 컨트롤러에 모든 코드를 몰아넣은AllInOneController와 Controller, Service, Repository로 역할을 나눈 코드를 비교해보았다. 일단 AllInOneController 코드를 읽기 어려울뿐아니라 읽고 싶은 생각조차 들지 않았고 역할과 기능이 눈에 들어오지 않았다 💡 우선 하나의 기능을 이해하려면 모든 코드를 다 보고 파악을 해야 한다는 점과 수정을 하거나 오류를 파악하려고 할 때도 위아래로 훑어가며 해야했기에 시간도 많이 걸리고 실수도 많이 나올 것 같았다. 마치, 어떤 기관에 문의를 하려는데 업무분장이 잘 되어있어서 누가봐도 명확하게 A라는 사람이 맡은 업무구나 라는 걸 알 수 있는 것과, 도..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/oTJiE/btrK3XxXire/hMmLKDj1AEhqQap6wV6mS1/img.png)
💡 처음 Java를 접했을 때 .java라는 파일을 생성했는데 왜 또 같은 이름으로 .class라는 게 생성이 될까? 그냥 하나의 파일로 할 수는 없는 건가? 왜 자꾸 파일을 생성해서 내 폴더를 지저분하게 하는 것인지 불만스러웠다. (돌이켜보니 Java라는 언어를 처음에 꽤나 마음에 들어하지 않았던 것 같다 ㅋㅋ) 어쨌건 이제와서야 .java는 우리가 보기위한 파일이고 컴파일러가 열일을 해서 만든 .class 파일로 운영체제가 이해를 한다는 것을 알게 되었다. 💡 사실 CS 지식이 부족해서 그저 코드가 전달이 되면 순서대로 쭉쭉 읽어나가겠거니 생각을 했었는데, 변수 하나를 생성할 때도 영역이 따로 배정이 되고 참조되지 않는 변수를 제거하는 역할을 하는 녀석이 따로 있다는 것이 마냥 신기하기만 하다. 그리..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/c2CxkL/btrK4CtAf8Z/eQMsGXL9WD4uxDSlYHsvEK/img.png)
What I Learned [[33. 같은 단어는 싫어]] 위 알고리즘 문제를 풀 때, 리스트를 선언하고 그 리스트를 String 배열로 바꾸려고 할 때 List.toArray 를 사용하면서 배열크기 인자를 좀 복잡하게 작성을 했었다. 애초에 그 인자크기 때문에 애를 먹었던 문제인데 List 에서는 그럴 걱정을 할 필요가 없었다.... 우선 toArray를 쓰면서 인자를 [0] 으로 해도 실제 만들어지는 배열 객체의 사이즈가 더 크다면 그 배열 객체의 사이즈를 따라가므로 엄청나게 간편하다. 굳이 배열크기를 구하려고 쌩난리를 치지 않아도 되었던 것이다. JAVA List 의 toArray() 메서드 List 컨테이너의 인스턴스를 배열(array)로 만드는것이 'toArray' 메서드이다. 하지만 이 메서드..
- Total
- Today
- Yesterday
- Spring
- 자바스크립트
- 자바bfs
- 타입스크립트
- Nest
- 백준
- 정렬
- DP
- 이분탐색
- BFS
- JavaScript
- 자바트리
- CS
- java
- 자바
- 해시맵
- SQL
- Comparator
- 자바dp
- JPA
- 알고리즘
- Algorithm
- SQLD
- 리액트
- 형변환
- 스프링
- 스프링부트
- 프로그래머스
- dfs
- Queue
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |