*상속

- 객체지향 프로그래밍에서는 기존 클래스를 가져다가 소스코드를 건드리지않고

  추가되는 부분만 따로 작성해서 새로운 클래스를 만들수있음

- 클래스를 가져다가 확장해서 새로운 클래스를 만드는 기술을 상속이라 한다.

 

*슈퍼클래스,서브클래스

- 자바에서는 다른 클래스에게 상속해주는 값을 슈퍼클래스(Account)라 하고

  상속을 받는 클래스를 서브클래스(CheckingAccount)라 한다.

- 상속을 받으면 추가되는 필드와 메소드만을 선언하면 완성할수있다.

- 서브클래스에서 상속받을때 extends와 상속받을 슈퍼클래스이름을 받아야함

 

#계좌 클래스(슈퍼클래스)

 

#직불카드 클래스(서브클래스)

- 메소드 오버라이딩

- 슈퍼클래스에서 존재하는 메소드를 서브클래스에서 재정의

 

 

 

#메소드 오버라이딩2 super 사용

- 슈퍼클래스에 존재하는 메소드를 사용하고 서브클래스에서 재정의 또한 해준다.

 

 

#메인 메소드

 

 

#메소드 오버라이딩1 결과값

- 재정의 해주었기 때문에 값의 변동이 없다.

 

 

#메소드 오버라이딩2 결과값

 

- super클래스에 존재하는 인출값을 가져왔기때문에 100값이 빠져나감

 

 

#final

 

클래스에서 final 사용

 

- 클래스를 상속받지 못하게 할때 final 사용

 

#메소드에서 final 사용

 

 

- 메소드에서 오버라이드를 못하게 할때 사용

 

#변수에서 final 사용

 

- final 선언시 처음 세팅한 값을 바꿀수없음

 

#abstract클래스 (추상 클래스)

- 객체를 만드는것을 인스턴스화 라고한다.

- 해당클래스를 인스턴스화 할수 없지만 상속을 받을수 있도록 해주는 클래스

 

 

- 상속은 받지만 인스턴스화 할수 없음

 

#abstract메소드 (추상 메소드)

- 바디가 없는 메소드형태로 상속을 받은 서브클래스에서 반드시 오버라이드를 해줘야함

- 비슷한 기능을 메소드들은 같은 이름으로 묶음으로 개발시에 규격을 만들수있다.

 

 

- 추상메소드를 오버라이드하지않아 에러발생

 

 

- 오버라이드 할 경우 에러가 나지않음

 

#상속의 다형성

 

- 서브 클래스들은 슈퍼클래스 변수에 대입할수있다.

* 슈퍼클래스 변수에 담겨져 있다고 하더라도 오버라이드한 메소드가 있다면

  생성시 사용한 클래스에 오버라이드된 메소드가 실행된다.

 

- 다형성을 이용해서 객체2개를 생성하고 각각실행하면 오버라이드된 메소드가

  실행되는것을 알수있다.

 

 

 

#인터페이스(interface)

 

- 자바에선 다중상속을 허용하지않는다. 그러므로 비슷한 기능을 가진 메소드들을

  공통으로 정의해주고 싶을때 인터페이스를 사용한다.

 

- 인터페이스는 클래스들의 공통기능(메소드)만 표헌할수있고 공통데이터들은 표현할수없다.

  단 상수들은 선언이 가능하다.

 

- 상속이라는 용어대신 구현(implementation)이라한다.

 

- 인터페이스에 속하는 메소드는 무조건 추상메소드로 선언해야한다. 즉

  인터페이스의 역할은 규격을 만들어주는 역할을 한다.

 

- 인터페이스는 여러개를 구현할수있다. (, 컴마 사용)

 

#선언

 

- 인터페이스의 내부는 무조건 추상메소드라서 abstract를 추가하지않아도

  컴파일러가 자동으로 추가해준다.

 

 

 

 

- abstract를 추가해주지않아도 자동으로 추가됨

 

 

#인터페이스 사용 예

 

1.인터페이스만 구현할때

- implements 사용

 

2.상속과 인터페이스를 같이 구현할때

- extends로 상속받고 implements 사용

 

3.인터페이스를 여러개 구현할때

- ( , ) 컴마 사용

 

 

#인터페이스의 다형성

 

- Test -> Test2,Test3 구현

 

 

 

 

 

 

 

 

 

#인터페이스 상속

 

- 클래스에서 상속받은 서브클래스를 구현했을때 해당 서브클래스와 슈퍼클래스의 메소드

  까지 오버라이드 해서 구현해야한다.

 

 

 

'Java > Java1' 카테고리의 다른 글

Java [메소드]  (0) 2017.09.06
Java [switch,배열정렬,Calendar]  (0) 2017.09.03
Java [반복문,for,while]  (0) 2017.08.30
Java [문자열 가공,배열]  (0) 2017.08.28
Java [조건문,논리연산자,비교연산자]  (0) 2017.08.27

+ Recent posts