자바

java/객체지향

[객체지향]오버라이딩(overriding)

●오버라이딩 오버라이드(override)의 사전적 의미는 '~위에 덮어쓰다'다. 오버라이드의 사전의미를 참조하여 조상클래스로부터 상속받은 메서드의 내용을 변경하는 것을 '오버라이딩'이라 한다. class Point { int x; int y; String getLocation() { return "x :" + x + ", y :"+ y; } } class Point3D extends Point { int z; String getLocation() { // 오버라이딩 return "x :" + x + ", y :"+ z :" + z; } } 위의 코드는 2차원 좌표계의 한 점을 표현하기 위한 Point클래스가 있을 때, 이를 조상으로 하는 Point3D클래스, 3차원 좌표계의 한 점을 표현한 클래스다. P..

java/객체지향

[객체지향] 상속

●상속 상속이란, 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 상속은 코드의 재사용성을 높이고 코드의 중복을 제거하여 프로그램의 생산성과 유지보수에 크게 기여한다. 상속은 새로 작성하고자 하는 클래스의 이름 뒤에 상속받고자 하는 클래스의 이름을 키워드 'extends'와 함께 써주기만 하면 된다. class Parent { } class Child extends Parent { // ... } 위의 두 클래스는 상속관계에 있다고 하며 상속하는 클래스(Parent)는 '조상 클래스'라 하고 상속받는 클래스(Child)는 '자손 클래스'라 한다. 만일 Parent클래스에 age라는 정수형 변수를 멤버변수로 추가하면, 자손클래스는 조상의 멤버를 모두 상소받기 때문에, Child클래스는 자동적으..

java/객체지향

[객체지향] 변수, 멤버변수의 초기화

●변수의 초기화 변수를 선언하고 처음으로 값을 저장하는 것을 '변수의 초기화'라고 한다. 변수의 초기화는 경우에 따라서 필수적이기도 하고 선택적이기도 하지만, 가능하면 선언과 동시에 적절한 값으로 초기화 하는 것이 바람직하다. 멤버변수는 초기화를 하지 않아도 자동적으로 변수의 자료형에 맞는 기본값으로 초기화가 이루어지므로 초기화하지 않고 사용해도 되지만, 지역변수는 사용하기 전에 반드시 초기화해야 한다. class Initest { int x; //인스턴스 변수 int y = x; //인스턴스 변수 void method() { int i; int j = i; // 에러. 지역변수를 초기화하지 않고 사용 위의 코드에서 x, y는 인스턴스 변수이고, i, j는 지역변수이다. 그 중 x와 i는 선언만하고 초기..

java/객체지향

[객체지향] this()와 this

●생성자에서 다른 생성자 호출하기 - this() 같은 클래스의 멤버들 간에 서로 호출할 수 있는 것처럼 생성자 간에도 서로 호출이 가능하다. 단 아래와 같이 두가지 조건을 만족해야 한다. 생성자의 이름으로 클래스이름 대신 this를 사용한다. 한 생성자에서 다른 생성자를 호출할 때는 반드시 첫 줄에서만 호출이 가능하다. Car(String color) { door = 5; Car(color, "auto", 4); //error } 위의 코드는 두 가지의 조건을 모두 지키지 않았기 때문에 오류가 발생했다. Car(String color)생성자 안에 Car(color, "auto", 4) 생성자를 첫 번째 줄이 아닌 두 번째 줄에 사용했으며, 생성자의 이름을 this가 아닌 Car로 생성했다. 생성자를 첫..

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)는 서로 다른 값을 유지한다. 그러나 모든 인스턴스에서 같은 값..

각시탈코더
'자바' 태그의 글 목록 (4 Page)