이번 4월까지는 java 기초 문법을 위주로 공부하기 때문에 당분간 java 관련 TIL을 업로드하겠습니다.
Java
제어자
- 클래스
- public, default, final, abstract
- 메서드
- 모든 접근제어자, final, abstract, static
- 멤버변수
- 모든 접근 제어자, final, static
- 지역변수
- final
- 메서드에 abstract과 static를 함께 사용할 수 없다.
- static 메서드는 몸통이 있는 메서드만 사용할 수 있기 때문이다.
- 클래스에 abstract과 final을 동시에 사용할 수 없다.
- final은 클래스에 확장할 수 없다는 의미이고, abstract은 상속을 통해서 완성되어야 하는 의미로 모순
- abstract 메서드의 접근 제어자는 private일 수 없다.
- abstract 메서드는 자손 클래스에서 구현해주어야 하기 때문에 접근 제어자가 private이면 자손 클래스에서 접근할 수 없기 때문이다.
- 메서드에 private과 final을 같이 사용할 필요가 없다.
- 접근 제어자가 private인 메서드는 오버라이딩될 수 없다. 이 둘 중 하나만 사용해도 충분하다.
- abstract -추상의, 미완성의
- 클래스
- 클래스 내에 추상 메서드가 선언되어 있음을 알린다.
- 메서드
- 선언부만 작성하고 구현부는 작성하지 않는 추상메서드임을 알린다.
- 클래스
- 접근 제어자
- 클래스
- public, default
- 메서드, 멤버변수
- public, protected, default, private
- 지역변수
- 없음
- 클래스
다형성
- 조상클래스 타입의 참조변수로 자손 클래스의 인스턴스를 참조할 수 있도록 하였다.
- 둘 다 같은 타입의 인스턴스이지만 참조변수의 타입에 따라 사용할 수 있는 멤버의 개수가 달라진다.
- 참조변수가 사용할 수 있는 맴버의 개수는 인스턴스의 맴버 개수보다 작거나 같아야 한다.
- 참조변수 형변환
- 자손 타입 → 조상 타입 : 형변환 생략 가능
- 조상 타입 → 자손 타입: 형 변환 생략 불가능
- 형변환: 참조변수의 타입을 변환하는 것, 인스턴스를 변환하는 것은 아니다.
- 참조변수의 형변환은 인스턴스에 아무런 영향을 미치지 않기 때문에 형변환을 통해서 인스턴스에 사용할 수 있는 멤버의 개수를 조절하는 것뿐이다.
- 상속관계에 있는 형변환은 양방향으로 자유롭게 수행가능하지만, 참조변수가 가리키는 인스턴스의 자손 타입으로 형변환은 허용되지 않는다.→ 참조변수가 가리키는 인스턴스의 타입이 무엇인지 확인하는 게 중요하다!!!
- instanceof 연산자
- 참조변수 instanceof 타입
- 결과가 true이면 검사한 타입으로 형변환이 가능하다!
- 참조변수에 영향받지 않은 것은 인스턴스 메서드뿐이다.
- 여러 종류의 객체를 배열로 다루기
- 조상타입의 참조변수 배열을 사용하면 공통의 조상을 가진 서로 다른 종류의 객체를 배열로 묶어서 사용할 수 있다.
- Vector 클래스
- 동적으로 크기가 관리되는 객체 배열이다.
인터페이스
- 추상 클래스처럼 추상메서드를 갖고 있지만 추상화 정도가 높다.
- 추상 클래스와 달리 일반 메서드와 멤버변수를 가질 수 없다.
- 추상메서드와 상수만 멤버로 가질 수 있다.
interface 인터페이스 이름 { public static final 타입 상수이름 = 값; public abstract 메서드 이름(매개변수목록); }
- 모든 맴버 변수는 public static final 이어야 한다. 이를 생략 가능
- 모든 메서드는 public abstract이어야 하며 이를 생략가능
- 단, static 메서드와 default 메서드는 예외 JDK1.8부터…
- 인터페이스 상속
- class와 달리 다중 상속받는 것이 가능하다.
학습 링크 : https://github.com/seunghyeokleeme/java-study/commit/142bd9c47b223135a089fecc04331645e8569124
다형성, 인터페이스 · seunghyeokleeme/java-study@142bd9c
Show file tree Showing 9 changed files with 399 additions and 0 deletions.
github.com
'Thoughts & Opinions' 카테고리의 다른 글
자바스크립트 배열의 인덱스 접근 성능은 일반적인 배열과 비교하여 느릴까? (0) | 2023.05.28 |
---|---|
2023.04.20 TIL (0) | 2023.04.20 |
2023.04.18 TIL (0) | 2023.04.18 |
기록 시작... (0) | 2023.03.02 |
댓글