#모든 코드와 사진은 <명품 자바 프로그래밍>
1학기 때 자바 수업 듣고, 2학기 왔는데 웬걸... 문법을 죄다 까먹어서 기억 안 나는 거 위주로 대충 정리해본다.
- 1/2차원 배열
- 비정방향 배열
< 클래스 >
- 생성자
-> 생성자가 없으면 c언어 구조체에 넣는 것처럼, littlePrince.title="어린왕자" 이런 식으로 값을 삽입해야 함.
-> 생성자는 없어도 됌. (생성자가 없을 경우 기본 생성자는 컴파일러가 자동 생성함)
-> 생성자는 여러 개 있을 수 있음
- this : 객체 자신에 대한 레퍼런스(파이썬의 self와 비슷한 듯)
-> this를 활용하는 예시
public Circle(int radius){
radius=radius;
}
public Circle(int radius){
this.radius=radius;
}
- 객체 배열
- 멤버 접근 지정
- static : 파이썬의 클래스 변수와 유사한 개념. 모든 객체들이 공유하는 변수와 메소드가 된다.
< 상속 >
- 슈퍼 클래스에 대한 접근 지정
- super()
-> 서브 클래스 객체를 선언하면 서브클래스와 슈퍼 클래스의 생성자가 모두 실행 됨.
-> 슈퍼 클래스 먼저 실행 -> 서브 클래스 생성자 실행
-> 서브 클래스 생성자에서 슈퍼 클래스의 생성자를 명시적으로 선택하는 것이 원칙.
-> 개발자가 명시적으로 선택하지 않았을 경우, 컴파일러가 자동으로 슈퍼 클래스의 '기본 클래스'를 호출한다.
-> super()
- 업 캐스팅 : 서브 클래스의 객체를 슈퍼 클래스의 객체로 취급.
-> how? 서브 클래스 객체에 대한 레퍼런스를 슈퍼 클래스 타입으로 변환.
Person p; //슈퍼 클래스
Student s = new Student(); //서브 클래스
p=s;
- 다운 캐스팅
Student s = (student)p;
- instanceof 연산자 : 객체가 어떤 클래스의 객체인지 구별한 방법
-> how? 레퍼런스 instanceof 클래스명
- 메소드 오버라이딩
- 동적 바인딩 : 슈퍼 클래스의 메소드를 무시하고 서브 클래스에서 오버라이딩된 메소드가 무조건 실행되도록 하는 것.(실행할 메소드를 컴파일 시 결정하는 것이 아니라, 실행 시에 결정하는 것)
-> 슈퍼 클래스의 메소드의 접근 지정자보다 접근의 범위를 좁여서 오버라이딩할 수 없다.
- super
- 메소드 오버로딩과 메소드 오버라이딩
-> 오버로딩의 경우 동일한 클래스 내 이름은 같고 매개변수의 개수나 타입이 다른 메소드를 중복 작성한다. 이는 정적 바인딩이 일어난다.
- 추상 클래스(abstract) : 선언은 되어 있으나 코드가 구현되어 있지 않은 메소드.
-> 추상 클래스는 추상 메소드를 통해 서브 클래스가 구현할 메소드를 명료하게 알려 주는 인터페이스의 역할을 함.
-> 추상 클래스는 객체를 생성할 수 없다.
-인터페이스(interface), implements
-> 인터페이스끼리만 상속 가능. 클래스는 implements를 통해 인터페이스의 모든 추상 메소드를 구현해야 함.
-> 상수 필드, 추상/default/private/static 메소드 사용 가능.
-> 필드(멤버 변수)는 만들 수 없음.
-인터페이스 다중 구현
'JAVA > 명품 자바 프로그래밍' 카테고리의 다른 글
자바 기초 문법 정리- 7장 제네릭 (0) | 2021.10.16 |
---|---|
자바 기초 문법 정리- 6장 모듈과 패키지 (0) | 2021.10.05 |
[3장] 도전 문제 (0) | 2021.04.15 |
[교수님 퀴즈] 자바 2-3장 (0) | 2021.04.09 |
[명품 자바 프로그래밍] 3장 실습 문제 (0) | 2021.04.07 |