본문 바로가기

JAVA/명품 자바 프로그래밍

자바 기초 문법 정리- 4~5장 클래스~상속

728x90

#모든 코드와 사진은 <명품 자바 프로그래밍>

 

 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 메소드 사용 가능. 

-> 필드(멤버 변수)는 만들 수 없음.  

 

 

 

-인터페이스 다중 구현