*상속
- 객체지향 프로그래밍에서는 기존 클래스를 가져다가 소스코드를 건드리지않고
추가되는 부분만 따로 작성해서 새로운 클래스를 만들수있음
- 클래스를 가져다가 확장해서 새로운 클래스를 만드는 기술을 상속이라 한다.
*슈퍼클래스,서브클래스
- 자바에서는 다른 클래스에게 상속해주는 값을 슈퍼클래스(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 |