일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 백내장 금감원
- 자바
- 금융감독원
- Code States 백엔드 합격 후기
- 코드스테이츠 합격 후기
- CodeState 후기
- 코드스테이츠 백엔드 부트캠프 합격
- Gamsgo
- codestates 국비지원 1기 합격 후기
- 금융감독원 민원신청
- 금감원 백내장 민원
- 겜스고
- 코드스테이츠 백엔드 후기
- 백준 알고리즘
- 코드스테이츠 부트캠프 합격 후기
- 코드스테이츠 합격
- Java
- 코드스테이츠 백엔드 교육과정
- Spring
- 백내장 다초점렌즈 삽입술
- 금감원
- 코드 스테이츠 백엔드 교육과정
- 메서드
- 에이치엘비
- 해시
- 백내장
- 보험금 지급거절
- 코테 합격후기
- HLB
- 코드스테이츠 부트캠프
Archives
- Today
- Total
개발하는 동그리
[Java] 객체지향 프로그래밍 (1) - 상속편 본문
반응형
상속이란?
기존 클래스를 재사용하여 새로운 클래스를 작성하는 문법 요소
멤버(필드, 메서드, 이너클래스)를 하위 클래스에게 건네준다.
보통 상위클래스와 하위클래스가 상속 관계에 있다고 표현하며, 하위 클래스는 항상 상위클래스보다 멤버갯수가 같거나 더 많다. = 클래스로부터 확장되었다 라는 표현이 정확한 표현이다.
상속을 사용하는 이유
코드를 재사용하면 적은 양의 코드로 새로운 클래스를 작성할 수 있고 중복도 제거할 수 있다.
따라서 상속을 하게되면 다형적 표현이 가능해진다.
다형적 표현이란!?
하나의 객체가 여러 모양으로 표현되는 것
객체의 다형성은 객체지향형 프로그래밍에서 가장 핵심적인 개념이며, 상속의 장점 중에 하나가 다형성의 표현이다. (중요)
상속의 조건
- 단일 상속만 사용할 수 있다.
- 다중 상속이 허용되지 않는다.
메서드 오버라이딩
- 메서드의 선언부(메서드 이름, 매개변수, 반환타입)가 모두 상위클래스와 완전히 일치해야 한다.
- 접근 제어자의 범위가 상위클래스의 메서드보다 같거나 넓어야 한다. (잘 모르겠음)
- 예외는 상위 클래스의 메서드보다 많이 선언할 수 없다. (잘 모르겠음)
public class Main {
public static void main(String[] args) {
Game1 game1 = new Game1();
Game2 game2 = new Game2();
Game3 game3 = new Game3();
Game game = new Game();
game1.run();
game2.run();
game3.run();
Game game11 = new Game1();
Game game22 = new Game2();
Game game33 = new Game3();
game11.run();
game22.run();
game33.run();
}
}
class Game {
void run() {
System.out.println("Game 시작!");
}
}
class Game1 extends Game {
void run() {
System.out.println("game1 실행중");
}
}
class Game2 extends Game {
void run() {
System.out.println("game2 실행중");
}
}
class Game3 extends Game {
void run() {
System.out.println("game3 실행중");
}
}
//Output
game1 실행중
game2 실행중
game3 실행중
Game 시작!
game1 실행중
game2 실행중
game3 실행중
위 코드는 Overwrite 오버라이드 예시이다.
그리고 객체를 생성할 때 참조변수에 상위클래스를 사용할 수 도 있는데, 이때에는 상위클래스에 있는 것만 사용할 수있다. 또는 오버라이드 된 것도 사용가능하다.
Game[] game = new Game[] { new Game1(), new Game2(), new Game3()};
for (Game game : Game) {
game.run();
}
//Output
game1 실행중
game2 실행중
game3 실행중
상위 클래스 타입으로 객체를 생성해서 배열로 관리할 수 있다.
Object 클래스 ( 최상위 Class )
최상위 클래스 Object 클래스는 기본 defalut 값이라고 보아도 무관하다.
왜냐하면 아무런 상속도 받고있지 않는 클래스는 extends object 가 추가되어 상속받고 있는 상태가 되기 때문이다.
메서드 명 | 반환 타입 | 주요 내용 |
toString() | String | 객체 정보를 문자열로 출력 |
equals(Object obj) | boolean | 등가 비교 연산(==)과 동일하게 스택 메모리값을 비교 |
hashCode() | int | 객체의 위치정보 관련. Hashtable 또는 HashMap에서 동일 객체여부 판단 |
wait() | void | 현재 쓰레드 일시정지 |
notify() | void | 일시정지 중인 쓰레드 재동작 |
이 밖에도 더 많은 메서드를 참조하고 있지만, 대표적인 Object 클래스의 메서드들이다.
반응형
'IT 정보 > Java' 카테고리의 다른 글
[Java] 객체지향 프로그래밍 (2) - 캡슐화편 (1) | 2022.05.12 |
---|---|
[Java] super 와 super()의 차이 (8) | 2022.05.12 |
[Java] this 와 this()의 차이 (11) | 2022.05.10 |
[Java] 생성자(Constructor) 란? (6) | 2022.05.10 |
[Java] 메서드 (Method) 란!? (8) | 2022.05.10 |