목록Language/자바 (6)
보근은 참고 있다
Upcasting은 하위 클래스의 오브젝트를 상위 클래스 타입으로 선언하는 것이다. 하위 클래스들은 상위 클래스의 속성들을 상속받기 때문에 상위 클래스의 멤버 변수나 메소드에 접근할 수 있다. 그렇기 때문에 Upcasting은 따로 명시를 하지 않는 암묵적인 형변환을 허용한다. Downcasting은 상위 클래스의 오브젝트를 하위 클래스 타입으로 선언하는 것이다. 상위 클래스들은 하위 클래스의 속성들을 상속받지 않을 수도 있기 때문에 멤버 변수나 메소드에 접근할 수 없다. 그렇기 때문에 Downcasting은 암묵적인 형변환이 허용되지 않는다. Parent p = new Child(); // Upcasting으로 Child 인스턴스가 Parent 타입으로 선언됨. Child c = (Child) p; /..
String 자바에서 문자열을 나타내기 위한 클래스이다. 자바의 String은 특별한 취급을 받는다. - 문자열 선언 String s1 = "abc"; String s2 = new String("abc"); s1 = "abcd"; 자바의 참조 타입은 new 연산자를 통해 초기화하는 것이 원칙이지만, String은 위처럼 바로 문자열을 넣어 초기화할 수 있다. String은 immutable하기 때문에 아래처럼 s1 객체에 "abcd"를 할당해주면 기존의 "abc"가 변하는 것이 아닌, 새로운 인스턴스 "abcd"를 만들어 할당해준다. - 주소값 할당 String s = "a"; String s1 = "a"; String s2 = new String("a"); String s3 = String.valueO..
함수형 인터페이스 함수형 프로그래밍이란, 데이터의 처리를 수학적 함수의 계산으로 취급하고 함수를 1등 시민으로 취급하는 프로그래밍 기법이다. 함수형 프로그래밍은 상태와 가변 데이터를 멀리하여 부작용이 없도록 한다. 자바는 함수형 프로그램 언어가 아니라 함수가 1등 시민이 아니다. 그렇기 때문에 함수를 리턴하지도, 파라미터로 받지도, 변수에 담지도 못한다. 자바는 대신에 함수형 인터페이스를 지원한다. 함수형 인터페이스는 단 하나의 추상 메소드를 가진 인터페이스이다. @FunctionalInterface 어노테이션을 붙여주면 확실히 할 수 있다. 함수형 인터페이스들은 익명 객체의 구현으로 동작하며, 간편하게 익명 객체를 구현하는 람다식으로 그 구현을 한다. 함수형 인터페이스의 종류 Function - T 값..
Stream 순차 및 병렬 집합 연산을 지원하는 일련의 요소. 데이터를 담고 있는 저장소가 아니며, 스트림이 처리하는 데이터 소스는 변경되지 않는다. 중계 오퍼레이터와 종료 오퍼레이터가 있다. 중계 오퍼레이터 distinct() - 이 스트림의 별개의 요소(Object.equals(Object)에 따라)로 구성된 스트림을 반환한다. (중복 제거) filter(Predicate) - Predicate와 일치하는 요소들만 모아서 스트림을 반환. map(Function) - Function으로 각각의 요소들을 변환. flatMap(Function) - map과 비슷하지만, Function의 반환값이 Stream이고, Optional의 faltMap과 마찬가지로 컬렉션이나 Optional 객체를 받으면 한꺼풀 ..
Optional Optional은 null이 아닌 값을 포함할 수도, 포함하지 않을 수도 있는 컨테이너 객체이다. 주로 리턴값에 쓰인다. 넘겨줄 값이 빈 값일 수도 있다고 알려주고 클라이언트는 그에 맞춰 처리를 진행한다. Optional 객체를 만드는 메서드 Optional.of() - null이 아닌 값을 받아 Optional로 감싼다. Optional.ofNullable() - null을 받을 수도 있다. 만약 null이라면 빈 Optional 객체를 반환한다. Optional.empty() - 빈 Optional 객체를 반환한다. ( = 기본 생성자, Optional.ofNullable()에 null값을 넣었을 때)e ex) -----------------------------------------..
SOLID란, 클린 코드의 저자인 로버트 마틴이 제시한 객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙이다. 프로그래머가 시간이 지나도 유지 보수와 확장이 쉬운 시스템을 만들고자 할 때 이 원칙들을 함께 적용할 수 있다. SRP(Single Responsibility Principle) : 단일 책임 원칙 OCP(Open/Close Principle) : 개방-폐쇄 원칙 LSP(Liskov Substitution Principle) : 리스코프 치환 원칙 ISP(Interface Segregation Principle) : 인터페이스 분리 원칙 DIP(Dependency Inversion Principle) : 의존 관계 역전 원칙 SRP 단일 책임 원칙 단일 책임 원칙은, 한 클래스는 하나의 책임..