객체지향

java/객체지향

[객체지향] 생성자

●생성자 생성자는 인터스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드'이다. 생성자 역시 메서드처럼 클래스 내에 선언된다. 구조가 메서드와 유사하지만 리턴값이 없다는 점이 다르다. 생성자의 조건은 다음과 같다. 생성자의 이름은 클래스의 이름과 같아야 한다. 생성자는 리턴 값이 없다. 생성자도 오버로딩이 가능하므로 하나의 클래스에 여러개의 생성자가 존재 가능하다. 클래스에 생성자를 구현하면 다음과 같다. class Point { Point() { //매개변수가 없는 생성자 ... } Point(int x, int y) { //매개변수가 있는 생성자 ... } ... } 생성자는 인스턴스를 생성하지 않는다. 단지 인스턴스 변수들의 초기화에 사용되는 조금 특별한 메서드일 뿐이다. 참고로 인스턴스를 생성하..

java/객체지향

[객체지향] 오버로딩(overloading)

자바에서 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메서드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메서드를 정의할 수 있다. 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 '오버로딩(overloading)'이라 한다. void println() void println(boolean x) void println(char x) void println(char[] x) void println(double x) void println(float x) void println(int x) void println(long x) void println(Object x) void println(String x) 오버로딩을 하기 위해서는 다음 세 조건을 만족시켜야..

java/객체지향

[객체지향] 메서드 간의 호출과 참조

같은 클래스에 속한 멤버들 간에는 별도의 인스턴스를 생성하지 않고도 서로 참조 또는 호출이 가능하다. 그런데 인스턴스 멤버가 존재하는 시점에 클래스 멤버는 항상 존재하지만, 클래스멤버가 존재하는 시점에 인스턴스 멤버가 존재하지 않을 수도 있기 때문에 클래스 멤버가 인스턴스 멤버를 참조 또는 호출하고자 하는 경우에는 인스턴스를 생성해야한다. class TestClass { void instanceMethod() {} //인스턴스메서드 static void staticMethod() {} //static메서드 void instanceMethod2() { //인스턴스메서드 instanceMethod(); //다른 인스턴스메서드를 호출한다. staticMethod(); //static메서드를 호출한다. } st..

java/객체지향

[객체지향] static 메서드와 인스턴스 메서드

변수와 마찬가지로 메서드 또한 앞에 static이 붙어있으면 클래스 메서드이고 붙어있지 않으면 인스턴스 메서드이다. 클래스 메서드는 클래스 변수처럼 객체를 생성하지 않고도 '클래스 이름, 메서드 이름(매개변수)'와 같은 식으로 호출이 가능하다. 반면 인스턴스 메서드는 반드시 객체를 생성해야만 호출할 수 있다. static 메서드 인스턴스변수 필요x, 인스턴스 생성 필요 x 인스턴스 메서드 인스턴스변수 필요o, 인스턴스 생성 필요o 그렇다면 static은 언제 붙여야 할까? 1.클래스를 설계할 때, 멤버변수 중 모든 인스턴스에 공통으로 사용되는 것에 static을 붙인다. -생성된 각 인스턴스는 서로 독립적이기 때문에 각 인스턴스의 변수(iv)는 서로 다른 값을 유지한다. 그러나 모든 인스턴스에서 같은 값..

java/객체지향

[객체지향] return문과 반환값

●return문 return문은 현재 실행중인 메서드를 종료하고 호출 한 메서드로 되돌아 간다. 또한 반환값의 유무에 상관없이 모든 메서드에는 하나의 return문을 갖는다. 그런데 반환타입이 'void'인 경우 return문이 없어도 아무런 컴파일 오류가 없었다. 그 이유는 void가 반환타입으로 사용될 경우 컴파일러가 자동으로 메서드의 마지막에 'return;'을 추가해주었기 때문이다. void printGugudan(int dan) { for(int i=1li

java/객체지향

[객체지향] 메서드

●메서드란? '메서드(method)'는 특정 작업을 수행하는 일련의 문장을 하나로 묶은 것이다. 수학의 함수와 유사하며 어떤 값을 입력하면 어떤 작업을 수행하여 결과를 반환한다. 메서드는 그저 값을 넣고 원하는 결과만 얻으면 될 뿐, 메서드가 내부적으로 어떤 과정을 거치는 지 알 필요가 없다. 그저 메서드의 입력 값과 출력 값을 알기만 하면 된다. 그래서 메서드를 내부가 보이지 않는 '블랙박스(black box)'라고도 한다. 메서드는 '선언부(header)'와 '구현부(body)'로 이루어져있다. 메서드를 정의한다는 것은 선언부와 구현부를 작성한다는 뜻이며 형식은 아래와 같다 ●메서드의 선언부 메서드의 선언부는 '메서드의 이름', '매개변수 선언', '반환타입'으로 구성되어있다. 메서드의 선언부는 후에..

java/객체지향

[객체지향] 변수

선언위치에 따른 변수의 종류 변수는 '변수의 선언 위치'에 따라 세 종류로 나뉜다. 멤버변수를 제외한 변수들은 '지역변수'이고 멤버변수 중 static이 붙은 변수는 '클래스 변수', 붙지 않은 것은 '인스턴스 변수'이다. class Variable { int iv; // 인스턴스 변수 static int cv;// 클래스 변수(static 변수, 공유변수) void method() { int lv = 0;// 지역변수 } } 변수의 종류 선언위치 생성시기 클래스 변수 클래스 영역 클래스가 메모리에 올라갈 때 인스턴스 변수 클래스 영역 인스턴스가 생성되었을 때 지역 변수 클래스 영역 이외의 영역(메서드, 생성자, 초기화 블럭내부) 변수 선언문이 수행되었을 때 클래스 변수와 인스턴스 변수 클래스 변수와 ..

java/객체지향

[객체지향] 객체

속성과 기능 객체는 속성과 기능, 두 종류의 구성요소로 이루어져 있다. 앞서 클래스와 객체를 설명한 것과 같이 클래스는 객체를 만들기 위한 설계도이고 클래스에는 객체의 모든 속성과 기능이 정의되어 있다. TV를 예로 들어보면, TV의 속성으로는 전원상태, 크기, 길이, 높이, 색상, 볼륨, 채널과 같은 것들이 있으며, 기능으로는 켜기, 끄기, 볼륨 높이기, 채널 변경하기 등이 있다. 속성 기능 켜기, 끄기, 볼륨 높이기, 볼륨 낮추기, 채널 변경하기 크기, 길이, 높이, 색상, 볼륨, 채널 객체지향 프로그래밍에서는 속성과 기능을 아래와 같이 변수와 메서드로 표현할 수 있다. 속성(property) -> 멤버변수(variable) 기능(function)->메서드(method) 채널 -> int channe..

각시탈코더
'객체지향' 태그의 글 목록 (2 Page)