old posting

    [Java] 객체지향 특징과 메소드 체이닝(Method chaining)

    캡슐화(encapsulation), 은닉(hiding), 추상화(abstraction) : 클래스 안에 필요한 "속성"과 "행동"을 멤버로 묶고 외부에서의 "직접적인 접근을 제한"하여 객체의 데이터와 메소드를 은닉하고, 사용자에게는 필요한 기능만 제공하여 추상화하는 객체지향 기술을 캡슐화라고 한다. * 클래스의 멤버변수를 접근하기 위한 기능을 제공하는 메소드를 getter, setter 라 한다. 클래스 안에서 this : 객체 내에서 자기자신(인스턴스)를 가르킨다. 메소드 체이닝(Method chaining) : 자기자신을 리턴하여, 연이어 메소드 호출을 가능케하는 메소드 설계, 보통 setter와 이와 같은 동작을 수행하는 메소드들에 적용하면 좋다. * this는 자기자신 인스턴스이다. 메소드에서 t..

    [Java] 클래스와 생성자(Constructor)

    클래스 : 우리가 만든 클래스를 사용하려면, 그 클래스의 인스턴스(실체 instance)를 생성해야 한다. * 클래스이름 변수이름 = new 생성자(); * 생성자() : 클래스의 이름과 동일, 클래스의 멤버변수들을 초기화 * new로 생성하는 instance들은 지역변수와 달리 인스턴스가 생성될 때 자동으로 초기화 된다. 특별히 초기화를 할 값들이 지정되어 있지 않을 때는 각 변수 타입의 기본값(default)으로 초기화 된다. 생성자(Constructor) * 생성자의 목적 : 인스턴스 생성시 멤버변수들의 초기화 * 생성자의 이름은 반드시 클래스의 이름과 동일 * 생성자는 리턴 타입이 없다. * 생성자도 매개변수(argument)를 가질 수 있다. * 생성자도 오버로딩(overload) 가능 * 클래..

    [Java] Math 클래스와 재귀 호출(recursive call)

    Math 클래스의 메소드 * Math.floor(num) : num을 넘지 않는 가장 큰 정수 * Math.ceil(num) : num보다 큰 가장 작은 정수 * Math.round(num) : num에서 반올림 * Math.random() : 난수 발생 재귀 호출(recursive call) * StackOverFlowError : Stack 메모리 영역에 공간이 없어서 생기는 오류! 해결 불가능 * OutOfMemoryError : Heap 메모리 용량 초과 * 재귀호출을 이용한 factorial 연산 : n! = n * (n - 1)! ex) 메소드명(num - 1); // 재귀호출

    [Java] 메소드 중복 정의(Method OverLoading)

    메소드 중복 정의(Method OverLoading) : 같은 이름으로 메소드를 매개변수 리스트를 달리하여 중복 정의, 즉, 이름이 같아도 메소드 signature가 다르면 중복정의 가능 * Method Signature란 : 메소드 이름 + 매개변수 리스트(parameter list) 1. 매개변수의 개수가 다르거나 2. 매개변수의 자료형이 다르거나 3. 매개변수의 순서가 다를 때 위 3개를 "매개변수 리스트"라 한다. * 메소드의 리턴 타입만 다른 경우는 중복 정의 할 수 없다! * 메소드 오버로딩의 장점 : 동일한 동작을 하는 메소드에 대해 매개변수만 달리하여 중복정의하면 이 메소드를 사용하는 입장에선 여러타입의 이름을 익힐 필요가 없다.