인프런 커뮤니티 질문&답변

어린 염소님의 프로필 이미지
어린 염소

작성한 질문수

나도코딩의 자바 기본편 - 풀코스 (20시간)

퀴즈 #7

Quiz_07 static

작성

·

202

0

햄버거 클래스들 앞에 static을 안썼더니 자꾸

this cannot be referenced from a static context가 떠서

public static class HamBurger {

}

public static class CheeseBurger extends Hamburger{

}

public static class ShrimpBurger extends Hamburger{

}

로 작성하였습니다.

그런데 선생님은 class만 쓰셔도 에러가 안나길래 해봤는데 또 같은 에러가 나왔습니다.

찾아봤더니 main함수는 static 메서드이므로 그렇지 않은 클래스는 참조할 수 없다는 뜻이라 같은 곳에서 내부클래스를 선언하게 될 경우 같이 static을 붙여줘야한다라고 하던대...

왜 선생님은 없어도 되고 저는 안될까요?ㅠ

 

 

답변 1

0

나도코딩님의 프로필 이미지
나도코딩
지식공유자

안녕하세요?
자바에서 하나의 .java 파일에는 하나의 public class 만 존재할 수 있다는 규칙이 있습니다. 그러므로 main() 메소드를 포함하는 클래스 (_Quiz_07 = 파일명과 일치해야 함) 를 제외한 나머지 클래스들 (HamBurger, CheeseBurger, ShrimpBurger) 을 정의하실 때는 non-public class 로, 그러니까 앞에 public 을 제외하고 적어주셔야 해요.

이렇게 작성해주신 코드를,

public class HamBurger {

}

public class CheeseBurger extends Hamburger{

}

public class ShrimpBurger extends Hamburger{

}

이렇게 바꿔주시면 올바로 동작할거에요 😊

class HamBurger {

}

class CheeseBurger extends Hamburger{

}

class ShrimpBurger extends Hamburger{

}

감사합니다.

어린 염소님의 프로필 이미지
어린 염소

작성한 질문수

질문하기