메뉴 건너뛰기

조회 수 3768 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

// 아래 문제의 오류를 찾아보세요. 그리고 고쳐보세요.

 

class Joo extends Kbh
{
public static void main(String[] args){
System.out.println(age);

}
}


class Kbh
{
String name = "bong";
int age = 24;
int birth = 901116;

void seoil() { System.out.println("bye");}

}

 

 

 

 

 

#개념

위에 문제는 상속을 통한 static 멤버와 관련된 오류입니다.

static멤버는 클래스가 메모리에 올라갈때 이미 자동적으로 생성되기에 인스턴스 생성하지 않고도

 클래스이름.클래스멤버변수;  또는 클래스이름.클래스메서드(); 와 같이 사용할수 있다.

 

하지만 인스턴스 멤버는 인스턴스를 생성할때 만들어 진다. 그래서 static이 붙은 메서드를 호출할때

인스턴스가 생성되어있지 않을 수 있어서 static메서드에서는 인스턴스 변수를 사용할수 없다.

그러나 인스턴스 메서드 내에서는 static이 붙은 멤버를 사용할수 있다. 왜냐하면 인스턴스 멤버는

인스턴스가 만들어 진 후에 쓸수 있다고 했다. 그럼으로 인스턴스를 사용한다는것은 이미 인스턴스를 생성했다는 

것 이기 때문이다.(인스턴스변수가 존재한다는 것은 이미 static이 붙은 멤버가 이미 메모리에 존재한다는 의미이다.)

 

 

 

 

 

#결론

그럼으로 위에 소스에서 잘못된점은 main()메서드 안에 인스턴스 변수인 age가 인스턴스 생성없이 사용 되어 에러가발생하였다.

main()도 메서드인데 제어자가 static이기때문에 클래스메서드 이고 클래스메서드 안에서 인스턴스변수 를 사용 하려면 객체를 생성한 후이거나 static age=24;  로 접근 하여야 한다.

중요한것은 main() 도 일반 다른 메서드들 처럼 메서드일뿐이다.!!


List of Articles
번호 제목 날짜 조회 수
71 다형성 file 2016.09.13 3260
70 예외 처리 기본 file 2016.09.13 3249
69 오토박싱 2016.09.13 3246
68 익명클래스 2016.09.13 3143
67 public static void main(String [] args) 2016.09.13 3143
66 for-each문 file 2016.09.13 3120
65 데몬쓰레드 2016.09.13 3099
64 인터페이스 2016.09.13 3089
63 자바 정규식 마스킹처리 file 2018.06.26 2635
62 JAVA 두개의 문서 파일 비교하기 2018.07.09 2388
61 숫자형식 포멧 방법 2018.02.09 2353
60 JAVA CentOS JDK 설치 및 환경변수 설정 file 2018.07.09 1821
59 사용자의 IP를 가져오기 (IPv4) 2020.06.29 1700
58 JAVA 이클립스 인코딩 변경하기 file 2018.07.09 1598
57 JDK 9에서 eclipse 실행이 안될때 2018.06.05 1596
56 JAVA TreeMap 인덱스 값 가져오기 및 Collections.sort 사용하기 2018.07.09 1490
55 이클립스 html, js 등등의 파일에서 에러표시 지우기 2019.03.05 1447
54 자바 날짜 포맷 변환 방법 file 2018.06.21 1439
53 JAVA JDK 제거하기 file 2018.07.09 1409
52 변환 (문자, 숫자, KSC5601.....) 2019.01.16 1281
Board Pagination Prev 1 2 3 4 5 6 7 8 Next
/ 8

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved