본문 바로가기

자바의 정석/객체지향1

(4)
변수의 초기화 변수의 초기화 변수 선언 이후에 처음 값을 저장하는 것을 변수의 초기화라고 한다. 멤버변수의 경우에는 초기화를 하지 않아도 자동으로 변수의 자료형에 맞는 기본값으로 초기화 되지만 지역변수(메서드의 변수)의 경우에는 사용 전에 반드시 초기화를 해야한다. 멤버변수의 초기화 방법에는 명시적 초기화, 생성자을 사용한 초기화, 초기화 블럭을 사용하는 등의 방법이 있다. 명시적 초기화 변수를 선언함과 동시에 초기화하는 것을 명시적 초기화라고 한다. 가장 기본적인 방식의 초기화로 형태는 아래와 같다. int door = 5; - 기본형 변수의 초기화 A a = new A(); - 참조형 변수의 초기화 명시적 초기화는 간단하지만 복잡한 초기화가 필요한 경우에는 생성자를 통하거나, 초기화 블록을 사용한다. 초기화 블럭 ..
생성자 생성자란 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드'라고 볼 수 있다. 구조는 메서드와 비슷하지만 차이점은 리턴값이 없다는 점이며, 이때 void를 사용하진 않고, 아무것도 붙이지 않는다. 생성자의 조건은 아래의 2가지다. 1. 생성자의 이름은 클래스의 이름과 같다 2. 생성자는 리턴 값이 없다. 우리가 알아야 할 것은 인스턴스를 생성하는 것은 생성자가 아니라 new연산자이며, 생성자는 인스턴스 변수들의 초기화에 사용되는 특별한 메서드일 뿐이다. A a = new A(); 위의 인스턴스 생성 코드는 3가지의 과정을 거친다. 먼저, new 연산자에 의해 메모리(heap)에 A클래스의 인스턴스가 생성된다. 다음, 생성자 A()가 호출되어 수행된다. 마지막으로, 생성된 A인스턴스의 주소가 참조변수..
오버로딩 오버로딩이란? 메서드도 변수처럼 클래스 내에서 구별될 수 있어야하기 때문에 각기 다른 이름을 가져야 하지만, 클래스 내에서 같은 이름을 가진 메서드가 있더라도 매개변수의 개수 혹은 타입이 다르면 같은 이름을 사용해서 메서드 정의가 가능하다. 이렇게 한 클래스 내에 같은 이름의 메서드를 여러개 정의하는 것을 '메서드 오버로딩'이라고 한다. 오버로딩의 조건 1. 메서드 이름이 동일해야 한다. 2. 매개변수의 개수 또는 타입이 달라야 한다. - 오버로딩된 메서드들은 매개변수에 의해서만 구별되며, 반환타입은 오버로딩 구현에 아무런 영향을 주지 않는다. 오버로딩된 같은 이름의 메서드로 모두 오류 없이 잘 동작하는 것을 알 수 있다. 이처럼 오버로딩을 사용하면, 다른 타입의 매개변수를 사용해도 동일한 효과를 가지는..
변수와 메서드 11. 클래스 메서드(static메서드)와 인스턴스 메소드 클래스 메서드도 클래스변수처럼 객체를 생성하지 않고도 클래스이름.메서드이름(매개변수) 와 같은 형식으로 호출이 가능하다. 반면, 인스턴스 메소드는 객체를 생성해야만 호출이 가능하다. 특징 1. 클래스를 설계할 때, 멤버변수 중에서 모든 인스턴스에 공통으로 사용하는 것에 static를 붙인다. 생성된 각 인스턴스들은 독립적이라서 각 인스턴스의 변수는 서로 다른 값을 유지하지만, 모든 인스턴스에서 값이 유지되어야 하는 변수의 경우는 static를 붙여서 클래스 변수로 정의한다. 2. 클래스 변수는 인스턴스를 생성하지 않아도 사용 가능하다. 클래스 변수는 클래스가 메모리에 올라갈 때 이미 자동으로 생성된다. 3. 클래스 메서드는 인스턴스 변수를 사용할..