최상의 답변
클래스에 액세스 수정자가없는 경우 기본 액세스 수정 자로 처리됩니다.
기본 액세스 수정자는 클래스, 필드, 메소드 등에 대한 액세스 수정자를 명시 적으로 선언하지 않음을 의미합니다.
액세스 제어 수정 자없이 선언 된 변수 또는 메소드는 모든 사용자가 사용할 수 있습니다. 같은 패키지의 다른 클래스. 인터페이스의 필드는 암시 적으로 public static final이고 인터페이스의 메서드는 기본적으로 public입니다.
Public-public으로 선언 된 클래스, 메서드, 생성자, 인터페이스 등은 다른 모든 클래스에서 액세스 할 수 있습니다. . 따라서 공용 클래스 내에 선언 된 필드, 메서드, 블록은 Java 유니버스에 속한 모든 클래스에서 액세스 할 수 있습니다.
그러나 액세스하려는 공용 클래스가 다른 패키지에있는 경우 공개 클래스를 가져와야합니다. 클래스 상속으로 인해 클래스의 모든 공용 메서드와 변수는 하위 클래스에 상속됩니다.
예
Public static void main (string [] args)
{
// ………………………………
}
응용 프로그램의 main () 메서드는 공용이어야합니다. 그렇지 않으면 Java 인터프리터 (예 : java)가 클래스를 실행하기 위해 호출 할 수 없습니다.
Answer
Java 파일에는 클래스 정의가 없을 수 있습니다. Java 파일을 컴파일 할 때 컴파일러는 각 클래스 정의에 대해 독립적 인 .class 파일을 생성합니다.
Java 파일에 주 클래스 만있는 경우 공용으로 정의 할 필요가 없습니다.
p>
Java 파일에 여러 클래스가있는 경우 Java 파일에서 하나의 공용 클래스 만 허용되므로 모든 클래스를 공용으로 만들 수 없습니다. 여기에서 공개 클래스의 이름과 Java 파일의 이름은 동일해야합니다.
//filename: Main6.java
class Demo2
{
public void Demo2()
{
System.out.println("Hello world");
}
}
class Main6
{
public static void main(String[] args)
{
Demo2 d=new Demo2();
d.Demo2();
}
}
output
Hello world
위의 예에서 “메인 클래스를 public으로 선언하지 않았습니다. 파일 이름으로 메인 클래스 이름을 지정했기 때문에 여전히 작동하고 있습니다.
//filename: Main6.java
public class Demo2
{
public void Demo2()
{
System.out.println("Hello world");
}
}
class Main6
{
public static void main(String[] args)
{
Demo2 d=new Demo2();
d.Demo2();
}
}
output:
Main6.java:1: error: class Demo2 is public, should be declared in a file named Demo2.java
자, 이번에는 오류가 발생합니다. 따라서 하나의 Java 파일에 여러 클래스가있는 경우 기본 클래스를 공용으로 정의하는 것이 좋습니다. 프로그램 실행은 메인 메소드에서 시작된다는 것을 알고 있습니다.
답을 얻길 바랍니다.