일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- syntax
- TortoiseSVN
- 캡슐화
- 문법
- 자바
- Class
- java
- IntelliJ
- git
- SSL
- 상속
- error
- terms
- IntelliJ IDEA Community
- 특징
- install
- cherrypick
- Android
- commit
- intellij 연동
- constructor
- Checkout
- svn
- 생성자
- VCS
- sourcetree
- Branch
- Android Studio
- Subversion
- gradle
- Today
- Total
Jay's Developer Note
[JAVA] Class - 5(상속) 본문
상속(Inheritance)
상속(inheritance)은 아주 매력적이다.
우리가 흔히 알고 있는 부모-자식 간에 상속과 동일하게 생각할 수 있다.
부모는 자식에게 유전자를 물려줄 수 있고 재산도 물려줄 수 있고 자식은 물려받은 것들을 사용할 수 있다.
부모가 없이는 자식이 존재할 수 없으며 자식은 부모가 필히 한 개이어야 한다.
부모클래스는 상위클래스, 수퍼클래스라고도 불리고 자식클래스는 하위클래스, 서브클래스라고도 불린다.
부모와 자식은 1:N 관계가 되어야 한다.
사용방법
extends 를 사용하여 부모클래스를 상속받는다.
[접근 제어자] class ClassName extends SuperClassName
부모클래스를 특정하지 않으면 Object 클래스를 상속받는다.
[접근 제어자] class ClassName [extends Object]
이전 게시글들에서 사용했던 소스를 활용해보겠다. https://fall-in-it.tistory.com/38
class Car {
public static String brand = "Hyundai";
int maxSpeed;
private String assembler;
}
class Avante extends Car { }
class Sonata extends Car { }
class Grandeur extends Car { }
Car 클래스를 Avante, Sonata, Grandeur 클래스가 상속받았다.
각 클래스는 brand 라는 멤버 변수만 접근할 수 있다. 이전 게시글들에서 봤던 접근 제어자를 다시 상기하여 복습해보자.
접근 제어자
class Car {
public static String brand = "Hyundai";
int maxSpeed;
private String assembler;
}
class Avante extends Car {
public String getBrand() {
// public 이기 때문에 접근 가능
return brand;
}
public String getAssembler() {
// private 이기 때문에 접근 불가
return assembler;
}
}
super & super( )
상속을 받게 되면 super 라는 키워드와 super( ) 메소드를 사용할 수 있다.
super 키워드는 상위클래스를 참조할 수 있는 키워드다.
super( ) 메소드는 상위클래스의 생성자를 호출할 때 사용한다. 상위클래스의 생성자를 호출하는 것이기 때문에 하위클래스의 생성자에서만 호출되어야 한다.
super 키워드 사용방법
// public, protected 만 호출 가능
super.상위클래스의 멤버 변수
super.상위클래스의 메소드( )
class Car {
public static String brand = "Hyundai";
protected int maxSpeed;
private String assembler;
}
class Avante extends Car {
public int getMaxSpeed() {
// protected 이기 때문에 접근 가능
return super.maxSpeed;
}
}
super( ) 메소드 사용방법
super( )
super(매개 변수1, ...)
class Car {
public Car() {
System.out.println("생성");
}
}
class Avante extends Car {
public Avante() {
super();
}
public String getBrand() {
// Error
// 생성자에서만 호출해야 함
super();
}
}
오버라이딩
오버라이딩(Overriding)은 상위클래스에 있는 메소드와 똑같은 메소드를 하위클래스에서 재정의해서 사용하는 것이다.
메소드의 반환타입, 이름, 매개 변수까지 전부 동일해야만 한다.
private, static, final 로 선언된 경우에는 오버라이딩할 수 없다.
class Car {
public void print() {
System.out.println("Super Print");
}
public final void println() {
System.out.println("Cannot Override\n");
}
}
class Avante extends Car {
public void print() {
System.out.println("Sub Print");
}
// 반환 타입이 다르면 오버라이딩 성립 X
public String print() { }
// final 은 오버라이딩 성립 X
public void println() { }
}
'JAVA' 카테고리의 다른 글
[JAVA] 임시 비밀번호 생성 직접 구현해보기 (0) | 2022.05.25 |
---|---|
[JAVA] 임시 비밀번호 생성(feat. RandomStringUtils) (0) | 2022.05.25 |
[JAVA] 캡슐화 & 은닉화 (0) | 2022.03.16 |
[JAVA] Class - 4(메소드) (0) | 2022.03.13 |
[JAVA] Class - 3(멤버 변수) (0) | 2022.03.11 |