Java - 개념정리 4

2022. 4. 5. 15:50Java

반응형

상속

  • 이미 잘 개발된 클래스를 재사용해서 새로운 클래스를 만들기 때문에 중복되는 코드를 줄인다.
  • 부모 클래스 상속받았을 경우
    • 부모 클래스 수정 시 자식 클래스 또한 수정됨
// 가능
class 자식클래스 extends 부모클래스1 {
	...
}

// 불가능
class 자식클래스 extends 부모클래스1, 부모클래스2 {
	// 다중 상속을 허용하지 않아 여러 개의 부모 클래스 상속 불가
	...
}

예시!!

extends A :: A class 상속

public class A {
	int field1;
    void method1() {...}
}
public class B extends A {
	String field2;
    void method2() {...}
}

final 클래스

  • 클래스, 필드, 메소드 선언 시 사용
  • 초기값 설정 후 더 이상 값 변경이 안 됨
  • 최종적인 클래스이기 때문에 상속 불가
  • 즉, 부모 클래스가 될 수 없어서 자식 클래스를 만들 수 없음
// 주로 사용하는 방법
public final class String { ... }

// 사용 불가능 --> extends(X)
public class NewString extends String { ... }

final 메소드

  • 메소드 선언 시 final 키워드 붙이면 최종적인 메소드가 되기 때문에 재정의할 수 없음
// final 메소드
public final void stop() {
	...
}
  • 위에서 Car 클래스의 stop() 메소드를 final로 선언
  • SportsCar 클래스에서 stop() 메소드 재정의 불가!
package sec01.exam06;

public class SportsCar extends Car {
	
    @Override
    public void speedUp() { speed += 10; }
    
    @Override
    public void stop() {
    	// 여기서 재정의 불가!
    }
    
}

접근제한자

  • public  //  protected  //  default  //  private

protected

  • 같은 패키지 내에서는 default와 같이 접근 제한이 없음
  • 다른 패키지에서는 자식 클래스의 접근만 허용
  • 필드, 생성자, 메소드 선언에 사용 가능
728x90
반응형

'Java' 카테고리의 다른 글

Java - 개념정리 6  (0) 2022.04.07
Java - 개념정리 5  (0) 2022.04.05
Java - 개념정리 3  (0) 2022.04.05
Java - 개념정리 2  (0) 2022.04.05
Java - 개념정리 1  (0) 2022.04.05