본문 바로가기
프로그래밍/자바

[Java] 상속, protected, static, super

by You_mool 2024. 1. 4.
반응형

상속 (Inheritance)

상속은 객체지향 프로그래밍의 핵심 개념 중 하나입니다. 부모 클래스(슈퍼 클래스)의 특성을 자식 클래스(서브 클래스)가 물려받는 것을 의미합니다. 자식 클래스는 부모 클래스의 속성과 메서드를 사용하거나 확장하여 새로운 기능을 추가할 수 있습니다.

// 부모 클래스
class Animal {
    void sound() {
        System.out.println("Some sound");
    }
}

// 자식 클래스
class Dog extends Animal {
    void bark() {
        System.out.println("Woof!");
    }
}

Dog 클래스는 Animal 클래스를 확장하여 bark() 메서드를 추가하고 있습니다. Dog 클래스는 Animal 클래스를 상속 받았기 때문에 sound() 메서드도 사용할 수 있습니다.

 

 

 

protected 키워드

protected는 접근 제어자 중 하나로, 같은 패키지에 있는 클래스나 상속 관계에 있는 하위 클래스에서만 접근할 수 있습니다. 즉, protected 멤버는 외부에서 직접 접근할 수 없지만, 서브 클래스에서는 접근할 수 있습니다.

class Animal {
    protected int legs;
}

 

 

 

 

static 키워드

static은 클래스 레벨의 키워드로, 인스턴스화하지 않고도 클래스의 멤버에 접근할 수 있도록 합니다. 정적 멤버는 클래스의 모든 인스턴스에서 공유됩니다.

public class Counter {
	static int count = 0;

    Counter() {
        count++;
    }

	public static int getCount() {
		return count;
	}
}
public class CounterTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Counter a1 = new Counter();
		Counter a2 = new Counter();

		System.out.println(Counter.getCount());
	}

}

결과 :

위 처럼 Counter 인스턴스를 생성할 때 count가 1씩 증가하도록 구현 후 Counter 인스턴스를 두개 생성 했습니다. static 변수는 클래스의 인스턴스들 간에 공유되기 때문에 결과가 2 인 것을 알 수 있습니다.

 

super 키워드

super는 자식 클래스에서 부모 클래스의 멤버나 생성자를 참조하기 위해 사용됩니다. 부모 클래스의 메서드를 호출하거나 부모 클래스의 생성자를 호출하는 데 사용됩니다.

class Animal {
    String sound() {
        return "Some sound";
    }
}

class Dog extends Animal {
    String sound() {
        return "Woof!";
    }

    String getSuperSound() {
        return super.sound(); // 부모 클래스의 sound() 메서드 호출
    }
}

super를 사용하여 부모 클래스의 sound() 메서드를 호출하고 있습니다.

반응형

'프로그래밍 > 자바' 카테고리의 다른 글

[Java] 람다(lambda)  (0) 2024.01.09
[Java] iterator 란?  (0) 2024.01.08
[Java] 메소드 오버로딩, 오버라이딩  (1) 2024.01.04
[Java] 자바 네이밍 규칙  (1) 2023.12.26