일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- LifeCycle
- Interceptor
- Deep Dive
- 탐욕법
- Spring
- nestjs
- MySQL
- 프로그래머스
- java
- 변수
- bean
- 자료구조
- winston
- node.js
- javascript
- REST API
- 인접행렬
- JWT
- 인접리스트
- dfs
- 알고리즘
- logger
- queue
- typescript
- GraphQL
- html
- TIL
- OOP
- css
- 코딩테스트
- Today
- Total
목록Language (51)
처음부터 차근차근
Typescript Class와 Javascript Class의 차이점 Javascript에는 접근 제어자가 없습니다. But 최신 브라우저와 최신 Node.js(버전 12 이상)에서는 지원합니다. Javascript에는 추상 클래스가 없습니다. Javascript에는 인터페이스가 없습니다. 따라서 다중 구현이 불가능합니다. Typescript에서는 이 부분이 보완되어 조금 더 강력하게 객체 지향 코드를 구현할 수 있게 되었습니다. Class 속성 접근 제어자 public : 클래스 외부에서 접근 가능 (기본 값으로 생략 가능합니다.) private : 해당 클래스 내부에서만 접근 가능합니다. protected : Book 클래스를 포함한 서브(자식) 클래스에서만 접근 가능합니다. class Book {..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/0qdwo/btsC0Zvkyfy/1Fre1z1IGsP2c7Sv5Yg6A1/img.png)
Interface란? interface는 일종의 추상클래스입니다. 추상메서드와 상수만을 멤버로 가질 수 있으며, 그 외의 다른 어떠한 요소도 허용하지 않습니다. 추상클래스를 '미완성 설계도'라고 한다면, 인터페이스는 밑그림만 그려져 있는 '기본 설계도'라고 할 수 있습니다. interface 인터페이스이름 { public static final 타입 상수이름 = 값; public abstract 메서드이름(매개변수 목록); } 순스 추상 클래스의 특징을 모두 가집니다. 인스턴스 생성 불가 상속 시 모든 메서드를 오버라이딩 해야 한다. 주로 다형성을 위해 사용된다. 인터페이스에도 클래스처럼 접근제어자로 public 또는 default만 사용할 수 있다. 모든 메서드는 public abstract이어야 하며..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/oSZZN/btsCTwHWpSd/X9CjV89Ubz5tAZQd6D9Pw1/img.png)
추상이란?? 여러 가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용. 즉, 추상화란 '형상을 뽑아내어 변화시키는 것'이라고 정의할 수 있습니다. 고양이, 강아지, 소에서 추상을 하면 동물, 포유류 등을 추상화 할 수 있습니다. 쉽게 말하자면 '일반화' 같은 것입니다. 추상 클래스 클래스를 설계도에 비유한다면, 추상 클래스는 미완성 설계도라고 비유할 수 있습니다. 추상 클래스는 이름 그대로 추상적인 개념을 제공하는 클래스입니다. 따라서 실체인 인스턴스가 존재하지 않습니다. 대신에, 상속을 목적으로 사용되고 부모 클래스 역할을 맡는 중요한 의미를 갖습니다. abstract class AbstractAnimal {...} 추상 클래스는 클래스를 선언할 때 앞에 추상이라는 의미의 ab..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bJR8kH/btsCWMCQZDZ/KBDUfHxeMkktv6AmkKiTZk/img.png)
객체 지향 프로그래밍의 대표적인 특징으로는 캡슐화, 상속, 다형성이 존재합니다. 좋은 개발자가 되기 위해서는 다형성에 대한 이해가 필수입니다. 다형성(Polymorphism)이란? "다양한 형태", "여러 형태", 즉, 여러 가지 형태를 가질 수 있는 능력을 의미 프로그래밍에서 다형성은 한 객체가 여러 타입의 객체로 취급될 수 있는 능력을 뜻합니다. 자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 프로그램적으로 구현했습니다. 다형성을 이해하기 위해서는 크게 2가지 핵심 이론을 알아야 합니다. 다형적 참조 메서드 오버라이딩 다형적 참조 다형적 참조를 이해하기 위해 간단한 상속 관계 코드를 만들어보겠습니다. package poly.basic; public class P..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b5SwKW/btsCVI8caDu/ZcL7M9WpAhix4RcCc3Lkek/img.png)
Final이란? Final 키워드는 말 그대로 '마지막의' 또는 '변경될 수 없는' 의미를 가지고 있으며, 이름 그대로 끝이라는 뜻입니다. 거의 모든 대상에 사용될 수 있습니다. Final이 사용될 수 있는 대상 Class 변경할 수 없는 클래스, 즉, 확장될 수 없는 클래스를 의미합니다. 즉, 다른 클래스의 조상이 될 수 없습니다. Method 변경될 수 없는 메서드를 의미하며, Overriding을 통해 재정의 될 수 없습니다. 멤버 변수, 지역 변수 변수 앖에 final이 붙으면, 값을 변경할 수 없는 상수가 됩니다. 재할당을 할 경우, 컴파일 오류가 발생합니다. Final 사용해보기 지역변수 package final1; public class FinalLocalMain { public static..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cBgetX/btsCMpvBsG9/K1wdRmXtd6KM07MASydD9k/img.png)
Static이란? 정적(static)은 고정된이란 의미를 가지고 있습니다. Static이라는 키워드를 사용하여 Static변수와 Static메소드를 만들 수 있는데 다른말로 정적필드와 정적 메소드라고도 하며 이 둘을 합쳐 정적 멤버라고 합니다.(클래스 멤버라고도 합니다.) 정적 필드와 정적 메소드는 객체(인스턴스)에 소속된 멤버가 아니라 클래스에 고정된 멤버입니다. 그렇기에 클래스 로더가 클래스를 로딩해서 메소드 메모리 영역에 적재할때 클래스별로 관리됩니다. 따라서 클래스의 로딩이 끝나는 즉시 바로 사용할 수 있습니다. Static 멤버 생성 Static 키워드를 통해 생성된 정적멤버들은 Heap영역이 아닌 Static영역에 할당됩니다. Static 영역에 할당된 메모리는 모든 객체가 공유하여 하나의 멤..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/xE9M0/btsCK727Mi8/13P3yL3KmfCKE5VETsll2K/img.png)
Java의 메모리 구조 메서드 영역(Method Area) : 메서드 영역은 프로그램을 실행하는데 필요한 공통 데이터를 관리합니다. 이 영역은 프로그램의 모든 영역에서 공유합니다. 클래스 정보 : 클래스의 실행 코드(Byte Code), Field, Method와 생성자 코드 등 모든 실행코드가 존재합니다. static 영역: Static 변수들을 보관합니다. Runtime 상수 풀 : 프로그램을 실행하는데 필요한 공통 리터럴 상수를 보관합니다. 예를 들어 "hello"라는 리터럴 문자가 있으면 이런 문자를 공통으로 묶어서 관리합니다. 이 외에도 프로그램을 효율적으로 관리하기 위한 상수들을 관리합니다. 스택 영역(Stack Area) : 자바 실행 시, 하나의 실행 스택이 생성됩니다. 각 스택 프레임은 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/RnsC6/btsCzsM0EyU/PRKyAfSUyYOnlszWKxhXC1/img.png)
제어자(modifier)란? 클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여합니다. 제어자는 클래스나 멤버 변수와 메서드에 주로 사용되며, 하나의 대상에 대해서 여러 제어자를 조합하여 사용하는 것이 가능합니다. 접근 제어자 : public, protected, (default), private 그 외 : static, final, abstract, native, transient, synchronized, volatile, strictfp 접근 제어자 access modifier 멤버 또는 클래스, 메서드에 사용되어, 해당하는 멤버 또는 클래스를 외부에서 접근하지 못하도록 제한하는 역할을 합니다. 접근 제어자 종류 private : 같은 클래스 내에서만 접근이 가능하다. (모든 ..
Package란? Package란 클래스의 묶음입니다. Package에는 클래스 또는 인터페이스를 포함시킬 수 있으며, 서로 관련된 클래스들끼리 그룹 단위로 묶어 놓음으로써 클래스를 효율적으로 관리할 수 있습니다. 즉, 클래스가 물리적으로 하나의 클래스파일(.class)인 것과 같이 패키지는 물리적으로 하나의 디렉토리 입니다. Package 사용 먼저 IntelliJ를 통해 패키지를 먼저 만들고 그 안에 클래스를 만들어야 합니다. package pack; public class Data { public Data() { System.out.println("패키지 pack Data 생성"); } } 패키지를 사용하는 경우 항상 코드 첫줄에 package pack과 같이 패키지 이름을 적어줘야 합니다. 이후에..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/eyVQCD/btsCzDN0vIh/zqIZDC9SOEKVrm7kuhAddk/img.png)
Java에서 객체를 생성하는 시점에 어떤 작업을 하고 싶다면 생성자(Constructor)를 이용하면 됩니다. 생성자란? 생성자(Constructor)는 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드'이다. 따라서 인스턴스 변수의 초기화 작업에 주로 사용되며, 인스턴스 생성 시에 실행되어야 하는 작업을 위해서도 사용된다. 생성자를 알아보기 전에 먼저 생성자가 왜 필요한지 코드로 알아보겠습니다. 생성자가 필요한 이유 간단한 MemberInit Class를 만들고, MemberInit 객체를 사용하는 코드를 작성해보겠습니다. public class MemberInit { String name; int age; int grade; } public class MethodInitMain1 { public..