글 작성자: 취업중인 피터팬
728x90
기본 환경
JDK : 1.8.0_261 버전
JRE : 1.8.0_261 버전
JAVA VERSION : 8 업데이트 261
Eclipse IDE VERSION : 2020-06버전

 

 

목표

상속받았을 때 static을 사용하는 법을 이해한다.


 

 

코드
package ex12inheritance;
/*
static(정적) 타입의 맴버도 상속이 되고 , 하위 클래스에서 접근할때는
맴버변수의 이름만으로 접근이 가능하다.
단, 클래스 외부에서 접근할 경우 객체생성 없이 클래스명을 통해서도
접근이 가능하다. 즉 static이 가진 기본적인 규칙을 그대로 따른다.
*/
class Adder {
public static int val = 0;
/*
static으로 선언되 맴버변수는 실제로는 외부(메소드 영역)에
생성되어 있으므로 클래스명을 통한 접근이 허용된다.
코드 레벨에서 보면 해당 클래스의 맴버변수으므로 변수명만으로
접근하는 것도 가능하다.
*/
public void add(int num) {
val += num;
Adder.val += num;
}
}
//자식 클래스의 맴버메소드는 모두 실행가능한 코드임. 접근의 문제 없음.
class AdderFriend extends Adder{
public void friendAdd(int num) {
val += num;
Adder.val += num;
}
public void showVal() {
System.out.println("val = " + val);
System.out.println("val = " + Adder.val);
}
}
public class E03StaticInheritance {
public static void main(String[] args) {
Adder ad = new Adder();
AdderFriend adFriend = new AdderFriend();
ad.add(1);
adFriend.friendAdd(3);
Adder.val += 5;
AdderFriend.val += 7;
adFriend.showVal();
}
}

 

원래의 static 규칙과 똑같습니다. 다만 상속받았을 경우 클래스명을 구지 쓰지 않아도 된다는 특징이 있습니다.

 

 

결과 값