스스로 부족한 것을 채우기 위한 학습 기록입니다(a.k.a 개인공부). 부족함을 알고 채워나가려 노력하고 있습니다. 피드백은 언제나 환영합니다.😺
지금까지 클래스와 객체는 붕어빵틀과 붕어빵으로 이해하고 있었는데 한번 더 가볍게 정리하고 넘어가고자 한다.
class Child extends Parents {
//
}
class Tv {
boolean power;
int channel;
void power(){power = !power;}
void channelUp() {++ channel;}
void channelDown(){-- channel;}
}
class CaptionTv extends Tv {
boolean caption;
void displayCaption(String text){
if (caption) {
System.out.println(text);
}
}
}
class CaptionTvTest {
public static void main(String[] args) {
CaptionTv ctv = new CaptionTv();
ctv.channel = 10; //조상 클래스로부터 상속받은 멤버(CaptionTv가 Tv로 부터)
ctv.channelUp(); //조상 클래스로부터 상속받은 멤버
System.out.println(ctv.channel);
ctv.displayCaption("Hello");
ctv.caption = true;
ctv.displayCaption("Hello");
}
}
분류 | this | super |
---|---|---|
그 클래스의 다른 생성자를 호출(자기자신) | 슈퍼 클래스(부모)의 생성자를 호출 |
class Cal {
public int sum(int v1, int v2) {
return v1 + v2;
}
//오버로딩
public int sum(int v1, int v2, int v3){
return this.sum(v1,v2)+v3;
//이때 this는 자기자신(Cal클래스)의 sum을 가리키게됨
}
}
class Cal2 extends Cal {
public int minus(int v1, int v2) {
return v1 - v2;
}
//오버라이딩
public int sum(int v1, int v2) {
System.out.println("cal2");
// return v1+v2; // 그냥 이렇게 사용한다면 코드 중복이 발생
return super.sum(v1, v2); //super를 써서 부모(cal)에 있는 것을 가리키게됨
}
}
public class InheritanceApp {
public static void main(String[] args) {
Cal c = new Cal();
System.out.println(c.sum(2,1));
Cal2 c2 = new Cal2();
System.out.println(c2.sum(2,1));
}
}