작성
·
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{
}
감사합니다.