일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 빌드
- bootstrap
- 인텔리제이
- 자동형변환
- dependency
- 컬렉션
- start.spring.io
- Jenkins
- 내장객체
- Java
- maven
- wrapper
- 제너릭
- 무한
- 메소드
- Short
- 박싱
- 콜렉션
- 제네릭
- 싱글턴
- 언박싱
- Scanner
- boxing
- 루프
- 스프링
- https://start.spring.io
- unboxing
- 싱글톤
- suvlet
- 클래스
Archives
- Today
- Total
Developer Gonie
[2주차] 42. 멤버변수의 'super' 본문
* super.멤버변수로 부모의 멤버변수에 접근할 때, 부모의 멤버변수가 private이 아닌 경우에만 접근이 가능하다.
* 자식클래스에서 부모의 멤버함수를 오버라이딩 하더라도 부모의 멤버함수에 접근이 가능하듯이
자식클래스에서 같은 이름으로 멤버변수를 선언해도, 부모의 멤버변수에 접근이 가능하다.
즉 덮여 씌워지는게 아닌, 아래와 같이 둘다 메모리에 존재하는 상태가 되어 언제든 둘 다 접근이 가능함.
단, 자식클래스에 같은 이름으로 멤버변수가 선언되어 있지 않는 경우에는 this.변수를 하면 부모의 것이 불린다.
=> 코드1, 코드2를 비교
코드1
class Parent {
int x = 10;
void method() {
System.out.println("P_x:" + x);
}
}// Parent
class Child extends Parent{
int x = 20;
void method() {
System.out.println("this.x:" + this.x); // Child의 x가 출력됨
System.out.println("super.x:" + super.x); // Parent의 x가 출력됨
}
}// Child
public class Ex06_06_super {
public static void main(String[] args) {
Child c = new Child();
c.method();
}
}
실행결과
this.x:20
super.x:10
코드2
class Parent {
int x = 10;
void method() {
System.out.println("P_x:" + x);
}
}// Parent
class Child extends Parent{
//int x = 20;
void method() {
System.out.println("this.x:" + this.x); //Parent의 x가 출력됨
System.out.println("super.x:" + super.x); //Parent의 x가 출력됨
}
}// Child
public class Ex06_06_super {
public static void main(String[] args) {
Child c = new Child();
c.method();
}
}
실행결과
this.x:10
super.x:10
'K-DigitalTraining 강의 > 1. Java' 카테고리의 다른 글
[2주차] 44. 접근제어자 4가지(public, protected, default, private) (0) | 2022.05.26 |
---|---|
[2주차] 43. 상속이랑 비슷한 클래스의 포함관계 (0) | 2022.05.26 |
[2주차] 41. 클래스 상속 및 생성자의 'super', 메서드의 'super' (0) | 2022.05.25 |
[2주차] 40. 객체 생성시 호출되는 '생성자' (0) | 2022.05.25 |
[2주차] 39. 객체로 배열 만들기 (0) | 2022.05.25 |
Comments