• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

Quiz_07 static

23.09.17 23:35 작성 조회수 160

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{

}

감사합니다.