본문 바로가기

두두의 IT

(172)
[OOP] 추상클래스와 인터페이스 추상 클래스(Abstract Class) 추상 메서드를 가지며, Abstract로 선언된 클래스. 최소 한 개의 추상메소드를 포함하는 경우 반드시 추상 클래스로 선언해야 함 추상 메소드가 하나라도 없을 때 Abstract로 선언한 클래스. 추상 클래스는 온전한 클래스가 아니기 때문에 인스턴스 생성 불가 상속과 구현 서브 클래스에서 슈퍼 클래스의 추상 메소드를 구현(오버라이딩) 슈퍼 클래스의 추상 메서드를 구현한 서브 클래스는 추상 클래스가 아님 추상 클래스를 상속 후 추상 메서드를 구현(오버라이딩)하지 않으면 추상 클래스가 됨(서브 클래스도 Abstract로 선언) [목적] 상속을 위한 슈퍼 클래스로 활용하기 위한 것 추상 메소드를 통해 서브 클래스가 구현할 메소드의 원형을 알려주는 인터페이스의 역항르 ..
[Kotlin] annotation class [Annotation] 메타데이터 ( 부가기능 )을 코드에 비침투적으로 추가할 수 있는 수단 멤버 변수, 함수, 클래스 등 다양한 곳에 위치 시킬 수 있으며 또한 다양한 기능을 가진 다양한 어노테이션이 있음 [기본적인 선언 및 사용방법] 아래 코드는 Test이라는 어노테이션을 제작한 것이며 @Test으로 사용할 수 있습니다. 여기에 기능을 추가하기 위해서는 AOP를 이용할 수도 있으며 reflection을 이용하여 Annotation을 체크 후 기능을 만들어 줄 수도 있습니다. annotation class Test [추가 속성] 추가 속성은 어노테이션 위에 또 다른 어노테이션을 달아주는 것입니다. 추가 속성의 대표적인 예는 아래와 같습니다. @Target : 어노테이션을 달 수 있는 구성 요소 선정 타..
[OOP] 접근지정자(Access Specifier) 접근지정자(Access Specifier) : 클래스나 멤버들을 다른 클래스에서 접근해도 되는지 여부를 선언하는 것 Java public 패키지와 상관없이 모든 클래스들이 접근 가능한 것 슈퍼 클래스의 public 멤버 : 서브 클래스는 항상 접근 가능 protected 다른 패키지 내 클래스 접근 대신 부모와 자식 간에만 공유가 가능하고, 메인클래스에서 다른 패키지의 변수에 직접 접근하는 것은 불가능함 슈퍼클래스의 protected 멤버 : 같은 패키지 내의 모든 클래스 접근 허용. 패키지 여부와 상관없이 서브클래스는 접근 가능 default 슈퍼클래스의 default 멤버 : 서브 클래스가 동일한 패키지에 있을 때, 접근 가능 private 클래스 내의 멤버에게만 접근이 허용되는 것 슈퍼 클래스의 p..
[Kotlin] enum class enum 열거형 클래스 쓰는 이유 : 코드 간결, 가독성, 인스턴스 생성과 상속 방지, 상수값의 타입 안정성 보장 열거형 클래스는 인터페이스를 구현할 수 있습니다 (하지만 클래스에서 파생될 수 없음), 모든 항목에 대한 인터페이스 멤버들의 공통 구현을 제공하거나, 익명의 클래스 내의 각 항목에 대해 별도의 구현을 제공합니다. 당신이 구현하기 원하는 인터페이스들을 열거형 클래스 선언에 다음과 같이 추가함으로써 완료됩니다. enum class 클래스명 : BinaryOperator, IntBinaryOperator { PLUS { override fun apply(t: Int, u: Int): Int = t + u }, TIMES { override fun apply(t: Int, u: Int): Int =..
[Java, Kotlin] final / open final 해당 클래스의 상속을 금지시킴 [Java] final Class : 더 이상 상속되지 않음. final이 없으면 모두 다른 클래스에서 상속 가능 final Method : 더 이상 오버라이딩 될 수 없음 final Field : 상수로서, 실행 중에 값을 변경할 수 없음 [Kotlin] 코틀린에서의 클래스와 메서드는 기본적으로 final임 open open Class : 상속 허용 open Method : 오버라이드 허용 프로퍼티의 앞에도 open 변경자를 붙여야 함 open class Parent { // 하위 클래스에서 override 불가능 fun method1(): Int { return 4 } // 하위 클래스에서 override 가능 open fun method2() :Boolean..
[Java, Kotlin] 생성자 생성자란? 객체가 생성되는 순간에 자동으로 호출되며 객체에 필요한 초기화를 수행하는 코드 생성자의 이름과 클래스의 이름은 동일해야 함 기본생성자 : 매개변수가 없고 실행코드가 없는 생성자 this() 클래스 내에서 생성자가 다른 생성자를 호출할 때 사용하는 메소드(코드) 반드시 생성자의 첫 번째 문장으로 사용되어야 한다. 객체가 생성되는 순간에 자동으로 호출되며 객체에 필요한 초기화를 수행함 한 클래스에서 매개변수가 다른 것이 여러개 작성할 수 있음 리턴 타입이 없음 클래스에 생성자가 하나도 선언되어 있지 않을 경우, 오류가 발생하지 않음 Java //클래스 - 생성자 class ClassName{ int a; ClassName(){ //기본생성자. 클래스의 이름과 같아야 함. 다른 생성자가 없을 때만 ..
개발자의 역량 [개발자란..] 시킨 일을 하는 사람이 아니라 내가 이 회사의 오너로서 이 회사를 발전시키기 위해서 자발적으로 참여하는 사람 어떤 논리로 풀어내야 될지 고민을 많이 하는 사람 + 전문성이 뛰어난 사람 내가 만들어낸 코드로 우리에게 주어진 비즈니스 문제를 해결하고 가치를 증명하는 사람 어떤 비즈니스 가치를 만들어낼 것인지 생각하는 사람 우리가 풀고자 하는 문제가 무엇인지를 정확히 이해하는 것에 노력을 들이는 사람 한 언어에 대한 이해도가 굉장히 높아질 때까지 깊게 공부하는 사람 개발을 빨리하는 사람 어떻게하면 더 좋은 구조로 더 확장성 있는 구조로 개발하는게 더 좋은지 질문하는 사람 어떤 문제가 있을 때 나만 해결할 수 있다는 생각으로 끝까지 물고 넘어져서 결국 어떻게든 해결을 하는 집요함을 가진 사람 누..
개발 언어에 대한 관심 (2020년 기준) JS Flavors JS로 컴파일되는 프로그래밍 언어들 typescript, reason, elm, clojurescript, purescript [TypeScript] JS의 superset JS 지식을 확장할 수 있음 FrontEnd Frameworks React, Vue.js, Angular, Preact, Ember, Svelte [React] 리액트로 웹사이트를 만들고 나면 유저들은 리액트 라이브러리를 다운로드 받아야 함 [Svelte] 코드를 쓰고 컴파일을 하고 나면 바닐라 JS가 됨 유저가 웹에 가면 어떤 라이브러리든 다운받지 않고 모든게 바닐라 js인 것 Data Layer Redux, Apollo, GraphQL, Relay, MobX FrontEnd Frameworks Express, ..

LIST