일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- Dependency Injection
- 스프링 파라미터 추출
- Servlet cookie
- Spring Cookie
- 자바스크립트
- 자바오류
- Spring 커맨드 객체
- JSR - 303
- Spring MVC Interceptor
- collection framework
- annotation
- 자바
- 오라클 DROP
- JSR - 380
- ddl alter
- 오라클 CREATE
- Mybatis 오류
- properties 변수
- 코드로 배우는 스프링 웹 프로젝트
- Spring message
- Spring
- Spring 객체로 주입받기
- 자바 List
- 오라클 TRUNCATE
- Spring MVC5 기본 세팅
- 스프링 인터셉터
- properties 파일 주입
- DDL DROP
- properties 파일
- DDL TRUNCATE
- Today
- Total
개발이좋아
[Java] 상속(inheritance) 본문
상속이란 자바에서 엄청나게 중요한 특징 중 하나이다.
상속은 말 그대로 물려받는 의미인데 자바에서는 슈퍼 클래스(부모 클래스)의 기능을 물려받는 것을 의미한다.
부모 클래스의 기능을 상속받은 자식 클래스는 부모 클래스의 멤버 변수와 메서드를 사용할 수 있다.
자바와 같은 객체지향프로그래밍 언어에서는 유지보수와 수정, 기능 추가가 용이한데 그 기반이 바로 상속이라고 할 수 있다.
자바에서 상속은 extends 예약어로 상속을 받는다.
먼저 상속을 해줄 클래스인 Car 클래스이다.
멤버 변수로 company, model, color, price를 가지고 있으며 객체를 생성할 때 멤버 변수를 초기화해주도록 했다.
메서드로는 Car클래스의 정보를 나타내는 info( ) 메서드와 각 각 run( ), stop( ) 메서드를 가지고 있다.
상속을 받을 클래스인 Grandeur이다. 클래스 이름 옆에 빨간 선을 보면 extends 예약어로 Car를 지정했다.
extends예약어로 Car 클래스를 상속받았기 때문에 Car 클래스의 멤버변수와 메서드를 사용할 수 있다.
Grandeur클래스는 추가로 fuel과 engine을 멤버변수로 가지고 객체를 생성할 때 Car와 마찬가지로 멤버 변수를 초기화해주도록 했다.
메서드 부분에 @Override는 부모클래스의 메서드를 재정의하는 어노텐션이다.
즉 이 메서드가 부모 클래스가 가지고 있던 메서드를 상속받아 재정의를 거친 메서드란 것을 의미한다.
Overriding과 Overloading은 자바의 다형성을 이루는 중요한 개념이다.
- Overriding : 같은 이름의 메서드를 여러 개 만들지만 매개변수의 타입과 매개변수가 같음
- Overloading : 같은 이름의 메서드를 여러개 만들지만 매개변수의 타입이나 자료형이 다름
Car 클래스와 Granduer 클래스를 MainClass의 객체로 생성하고 각각의 생성자와 메서드를 호출하면 콘솔에 찍히는 결과는 다음과 같다.
위의 로그는 Car 객체의 로그이고 아래의 로그는 Granduer 객체의 로그이다.
예제에서 보듯 상속을 이용하면 기존의 부모 클래스를 더욱 보강하여 사용할 수 있으며 다형성을 구축할 수 있다.
예를 들어 동물이라는 클래스를 호랑이와 여우라는 클래스가 상속을 받았을 때 호랑이와 여우는 서로 동물이라는 공통점이 있지만 가진 속성과 기능은 다르다.
위와 같이 하나의 상위 클래스를 이용해서 여러 하위 클래스를 만들어 낼 수 있는 것이 상속이다.
"본 포스팅은 필자가 공부한 것을 정리해놓은 것으로 오류가 존재할 수 있습니다."
'Java' 카테고리의 다른 글
[Java] 단락 회로 평가 (Short Circuit Evaluation; SCE) (0) | 2019.12.05 |
---|---|
[Java]생성자 Constructor (0) | 2019.12.04 |
[Java] 인터페이스 Interface (0) | 2019.12.02 |
[Java] this 키워드 (0) | 2019.12.01 |
[Java] 람다식 (0) | 2019.11.29 |