본문 바로가기
자바 객체지향 문법

자바 객체지향 문법 - final, String, 접근제한자, 인터페이스

by 플라퉁 2023. 2. 16.
728x90
반응형

부모가 될 수 없는 클래스

 - 상속을 금지 시키려면 클래스를 정의할 때 final 키워드를 사용한다. 

 - public fianl class 클래스명 {}

 

String 클래스는 왜 final 일까?

 - 다음 예제를 보며 알아보자

 

String str1 = "hello";

String str2 = "hello";

String str3 = new String("hello");

String str4 = new String("hello");

 

다음과 같은 코드에서 str1,2,3,4를 출력한다면?

답 : 

hello

hello

hello

hello

가 나오게 됨

 

만약 

if(str1 == str2){

}

if(str1 == str3){

}

if(str3 == str4){

}

이경우에는 첫번째 if문만 참이된다.

이유는 참조변수와 메모리에 어떻게 저장이 되는지를 생각해보면 된다.

 

따라서 조건문으로 값만 확인 하고 싶다면 equals 메서드를 사용하면 된다.

String과 비슷하지만 내부가 변하는 StringBuffer 클래스가 있다.

 

접근제한자 클래스내부 동일패키지 하위클래스 그외
public O O O O
protected O O O X
default O O X X
private O X X X

 

인터페이스

 - 어떤 기능을 만들어야 할까? 

 - 만들어야 할 기능들을 관련된 것끼리 묶은 후 이름을 지어준다.

 - 기능적 요구사항과 비기능적 요구사항

 

인터페이스 작성 문법

[public] interface 인터페이스 이름 {}

 - 인터페이스 이름은 Upper CamelCase로 작성된다.

 - interface도 확장자가 .java 파일로 작성한다.

 - 인터페이스의 모든 필드는 public static final 이어야 하며, 모든 메서드는 public abstract이어야 한다. (java 7 까지는)

 - final, abstract를 생략하면 자동으로 붙는다.

 - java8 부터는 디폴트(default) 메서드와 정적(static) 메서드도 선언이 가능합니다.

 

인터페이스를 구현하게 되면 반드시 인터페이스가 가지고 있는 메서드를 오버라이딩할 필요가 있다.

728x90
반응형

댓글