WIL-1_Java(2)

신경연·2023년 1월 26일
0

WIL

목록 보기
3/6

용어들에 너무 익숙하지 않았다.
이전에 정리한 것 처럼,
새로 알게된 것이나 익숙해지고자 하는 것 위주로 정리해 보고자 한다.

1.오버로딩

매개변수 즉, 입력하는 값이 다르지만 같은 기능을 수행하는 경우가 많을 때 사용성 및 효율을 높이기 위해 오버로딩을 사용합니다.

class Overloading8_1 {

    int add(int a, int b) {
        System.out.println("int add(int a, int b)");
        return a + b;
    }

//    void add(int a, int b) { // 반환 타입이 다르다고 오버로딩이 성립되지는 않음
//        System.out.println("void add(int a, int b)");
//        System.out.println("a + b = " + a + b);
//    }

    long add(long a, long b) {
        System.out.println("long add(long a, long b)");
        return a + b;
    }

    long add(long a, int b) {
        System.out.println("long add(long a, int b)");
        return a + b;
    }

    long add(int a, long b) {
        System.out.println("long add(int a, long b)");
        return a + b;
    }

}

2. 상속

상속

기존의 클래스로 새로운 클래스를 작성하는 것입니다.
두 클래스를 부모와 자식으로 관계를 맺어주는 것입니다.
extends 키워드를 사용하여 관계를 맺어줍니다.

class Parent {}
class Child extends Parent{}

포함

클래스의 멤버로 참조변수를 선언하는 것입니다.
작은 단위의 클래스를 만들고, 이 들을 조합해서 클래스를 만듭니다.

class Engine {}
class Door {}
class Car {
    Engine engine = new Engine();
    Door[] doors = new Door[4]; // 자동차 문 4개, Door 클래스 하나로 문 4개 생성
}

상속과 포함 결정

상속관계 : ~은 ~이다. (is - a)
포함관계 : ~은 ~을 가지고 있다. (has - a)

절대적이진 않지만 많이 도움이 될 것 같아 넣어보았다.

3. 오버라이딩

상속받은 조상의 메서드를 자신에게 맞게 변경하는 것.

class Point {
    int x,y;
    String getLocation() {
        return "x: " + x + ", y: " + y;
    }
}

class Point3D extends Point {
    int z;

    @Override
    String getLocation() {
        return "x: " + x + ", y: " + y + ", z: " + z;
    }
}

오버로딩 vs 오버라이딩

오버로딩 : 기존에 없는 새로운 메서드를 정의하는 것.
오버라이딩 : 상속받은 메서드의 내용을 변경하는 것.

4. super

super는 진짜 안익숙하다. 적응하자

class Child extends Parent {
	int x = 30;
    Child() {
        // super() 를 통해서 부모 클래스의 멤버변수를 초기화합니다.
        super(10, 20, 30);
    }

    void childMethod() {
        System.out.println("Child 의 x = " + x);
        System.out.println("현재 객체 자신의 x = " + this.x);
        System.out.println("Parent 의 x 의 " + super.x);

        // 만약 Child 에 변수 x 가 없다고 한다면
        // 위 int x = 30; 을 주석하시면 this.x 는 부모클래스의 x를 가리킵니다.
        // Child 의 x = 10 이 됩니다.
    }
}

5. 제어자

클래스와 클래스의 멤버(변수, 메서드) 에 부가적인 의미를 부여합니다.
접근 제어자 : public, protected, (default), private
그 외 : static, final, abstract ...

하나의 대상에 여러 제어자를 같이 사용 가능합니다.(접근 제어자는 하나만)
순서는 상관없지만 주로 접근 제어자를 제일 왼쪽에 선언합니다.
public static void main(String[] args) {}

접근 제어자

private : 같은 클래스 내에서만 접근이 가능합니다.
(default) : 같은 패키지 내에서만 접근이 가능합니다. (생략가능)
protected : 같은 패키지 내에서, 그리고 다른 패키지의 자손 클래스에서 접근이 가능합니다.
public : 접근 제한이 전혀 없습니다.

profile
반갑습니다

0개의 댓글