부모가 될 수 없는 클래스
- 상속을 금지 시키려면 클래스를 정의할 때 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) 메서드도 선언이 가능합니다.
인터페이스를 구현하게 되면 반드시 인터페이스가 가지고 있는 메서드를 오버라이딩할 필요가 있다.
'자바 객체지향 문법' 카테고리의 다른 글
자바 객체지향 문법 - 팩토리 메서드 패턴, 자바 리플렉션 (0) | 2023.02.16 |
---|---|
자바 객체지향 문법 - 생성자, 추상 (0) | 2023.02.16 |
객체지향 문법 - 필드 선언 (0) | 2023.02.16 |
Java 객체지향 프로그래밍 기초: 클래스, 메서드, 객체와 객체 사이의 커뮤니케이션 이해하기 (0) | 2023.02.14 |
Java OOP 핵심 개념 다루기: 추상화, 캡슐화, 오버로딩, 상속, 오버라이딩 및 프로퍼티 (0) | 2023.02.14 |
댓글