자바에서 오버로딩이란 동일한 기능을 수행하는 메서드를 추가로 작성하는 것을 뜻한다. 예를 들자면, PrintStream 클래스의 println 메서드가 있다. println 메서드 정의 실제 사용 예시 void println(int x) System.out.println(2); void println(char x) System.out.println('A'); void println(String x) System.out.println("Hello"); ... ... println 메소드 호출 시, 매개변수로 넘겨주는 값의 타입에 따라 위의 오버로딩된 메소드들 중 하나가 선택되어 실행된다. 오버로딩의 조건 메서드 이름이 같아야 한다. 매개변수의 개수 또는 타입이 달라야한다. 반환타입, 매개변수 이름은 상관없..
변수 선언 위치에 따른 변수의 종류 변수 종류는 변수의 선언 위치에 따라 결정된다. 종류로는 인스턴스 변수, 클래스 변수(static 변수, 공유 변수)와 지역 변수가 있다. 클래스 변수 인스턴스 변수 지역 변수 선언 위치 클래스 영역 static 키워드 붙임 클래스 영역 클래스 영역 외의 영역 (메서드, 생성자, 초기화 블럭 내부) 생성 시기 클래스가 메모리에 올라갈 때 인스턴스를 생성할 때 변수 선언문이 수행될 때 메모리 영역 Method Area Heap Call Stack 초기화 타입별 기본값으로 초기화 타입별 기본값으로 초기화 사용 전 명시적 초기화 필요 접근 방법 인스턴스와 무관하게 클래스명으로 접근 Animal.isMortal = true; 인스턴스 생성 후, 변수명으로 접근 Animal a..
실제 사물의 속성과 기능은 각각 변수와 메서드로 추상화되어 클래스에 정의된다. 각 클래스를 구체화한 것이 객체이다. 자주 나오는 예시로는 붕어빵 틀(클래스)과 붕어빵(객체)이 있다. 클래스와 객체(인스턴스) 클래스 객체(인스턴스) 정의 실제 사물의 속성과 기능을 추상화해 정의해 놓은 것 객체의 틀 역할을 함 실제로 존재하는 것 클래스에 정의된 대로 메모리에 생성됨 용도 객체를 생성하기 위해 사용 객체의 기능과 속성에 따라 다르게 사용 클래스로부터 만들어진 객체를 그 클래스의 인스턴스라고 한다. 인스턴스와 객체는 같은 의미지만, 객체가 좀 더 포괄적인 느낌이라면, 인스턴스는 어떤 클래스부터 만들어진 객체인지 강조하는 구체적인 의미를 갖고 있다. 클래스의 정의 클래스를 정의할 때 사물의 속성은 멤버변수로, ..
객체지향이론은 실제 세계와 유사한 가상 세계를 컴퓨터 속에서 구현하기 위해 노력하는 과정에서 탄생했다. 실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건은 사물 간의 상호작용이라는 기본 개념을 바탕으로 한다. 객체지향 프로그래밍이란? 절차지향 프로그래밍과 달리 어떤 문제를 해결하기 위해 기능과 절차만 고려하는 것이 아니라, 문제를 해결하기 위한 데이터(변수)를 갖고 있고, 기능(메서드)를 수행할 수 있는 객체를 식별해 객체 간 유기적 결합을 통해 문제를 해결하고자 하는 프로그래밍 방식. 객체지향언어의 특징 코드 재사용성이 높다. 기존 코드를 이용해 새 코드를 쉽게 작성할 수 있다. 코드 관리가 용이하다. 코드 간 관계를 활용해 쉽게 코드를 변경할 수 있다. 유지보수가 쉽다. 신뢰성 높은 프..