자바의 Object Class Object Class는 자바의 모든 클래스의 최상위 클래스다. 모든 자바의 클래스는 Object Class를 상속받는다. (컴파일러가 자동으로 Object 선언시 extends Object를 추가한다) 모든 클래스는 Object Class의 일부 메서드를 Override를 재정의 해서 사용할 수 있다. Object Class의 주요 재정의 메서드 주요 재정의 메서드를 재정의 하기 전에 사용하는 Student Class의 멤버변수는 아래와 같음. // Cloneable한 클래스를 구현할 것이기 때문에 에노테이션을 달아준다. public class Student implements Cloneable{ String studentName; int studentId; public ..
Java의 내부 클래스란? 클래스 내부에 다시 한번 클래스가 정의 되는 경우가 있다. 이렇게 클래스 내부에 정의되는 클래스를 내부 클래스라고 한다. 내부 클래스는 인스턴스 내부 클래스, Static 내부 클래스, 지역 내부클래스, 익명 내부 클래스가 있다. 인스턴스 내부 클래스 내부적으로만 사용될 클래스다. 인스턴스 내부 클래스는 외부 클래스가 생성된 후에 내부 클래스가 생성된다. Private이 아닌 내부 클래스는 외부에서 선언이 가능하다. 하지만 그렇게 사용하지는 않는다. 외부 클래스 내부에 있기 때문에 외부 클래스의 Private 변수, 메서드도 사용 가능하다. package ch01; class OutClass{ private int oNum = 10; private static int sNum ..
함수형 프로그래밍(Functional Programming) 함수형 프로그래밍은 함수를 구현하고, 매개변수만으로 함수 내부에서만 수행되는 프로그래밍 기법이다. 함수는 외부의 변수들을 사용하지 않아, 외부에 영향을 미치지 않는다. 즉, 외부 영향이 줄어들기 때문에 안정성이 좋다. 함수형 프로그래밍은 매개변수를 기반으로만 수행되기 때문에 동시에 여러 함수를 사용할 수 있다. 즉, 병렬 처리가 가능하다는 이점이 있다. Lambda Expression(람다식) 람다식은 익명 함수다. 람다식은 매개 변수와 매개 변수를 이용한 실행문으로 작성이 가능하며, 코드는 간결해지나 가독성이 떨어진다. 람다식은 람다식을 위한 인터페이스가 필요하며, 인터페이스 내에는 단 하나의 메서드만 존재해야한다. 람다식은 이름이 없기 때문..
Reduce 연산 Reduce는 정의된 연산이 아닌, 프로그래머가 원하는 연산을 디자인 할 수 있다. Reduce는 Stream의 최종연산이 되며, Stream을 Return한다. Stream을 Return 하기 때문에 각 요소는 소모된다. Reduce는 아래 두 가지 형태가 있음. // 1) 람다식을 활용한 reduce Stream.reduce(초기값, 람다식) // 2) Binary Operator 클래스를 구현한 인스턴스 Stream.reduce(Binary Operator가 구현된 인스턴스) 1번은 초기값을 넣은 후, 람다식으로 원하는 연산을 중괄호를 이용해 구현하면 된다. 1번에 대한 코드는 아래와 같다. public class ReduceTest { public static void main(..
객체 지향 프로그래밍 객체 지향 프로그래밍은 각 항목들이 각각의 성질을 가지는 객체로 보고, 그 객체들 간의 상호작용을 구현하는 프로그래밍이다. 즉, 객체간의 협력이 일어나는 것을 묘사하는 것으로 보면 된다. 실제로 객체 지향 프로그래밍은 우리 삶과 매우 닮아있다. 예를 들어 회원 로그인을 하고 여러 판매자가 팔고 있는 상품 중 하나를 골라 주문하는 경우가 있다. 이를 객체 지향 프로그래밍으로 뜯어볼 수 있다. "회원 객체"가 홈페이지에서 "판매자 객체"가 판매하고 있는 "상품 객체"를 골랐다고 볼 수 있다. 객체 지향 프로그래밍은 이런 객체 관점에서 뜯어본다면 회원 객체와 판매자 객체, 그리고 상품 객체가 서로 상호작용을 하는 것을 구현하는 프로그래밍이라고 볼 수 있다. 이런 객체 지향의 핵심은 1) ..