작업 프로그램에서 개인 메서드에서 공용 메서드로의 액세스를 변경하면 컴파일 오류가 발생하지 않고 프로그램 동작이 다르게 작동하는 간단한 프로그램의 예를 보여줄 수 있습니까?컴파일 오류가없는 메서드에 대한 액세스 변경
언제 새 개인 메서드를 추가하면 컴파일 오류가 발생하거나 프로그램 동작이 다르게됩니까?
작업 프로그램에서 개인 메서드에서 공용 메서드로의 액세스를 변경하면 컴파일 오류가 발생하지 않고 프로그램 동작이 다르게 작동하는 간단한 프로그램의 예를 보여줄 수 있습니까?컴파일 오류가없는 메서드에 대한 액세스 변경
언제 새 개인 메서드를 추가하면 컴파일 오류가 발생하거나 프로그램 동작이 다르게됩니까?
이것은 상속을받습니다. 하위 클래스는 상위 클래스의 개인 메서드와 동일한 서명을 가진 메서드를 가질 수 있지만 재정의하지는 않습니다.
이 항목을 현재 실행하면 Foo
이됩니다. Super#computeOutput()
을 public
으로 변경하면 Bar
이 표시됩니다. Sub#computeOutput()
이 이제 Super#computeOutput()
을 무시하기 때문입니다.
+1 좋은 예. 사람들에게'@ Override'를 사용하도록 유도해야합니다. ;) –
새 개인 메서드를 추가하면 컴파일 오류이 발생하거나 프로그램 동작이 다르게됩니까? 당신이
Sub
에 개인 방법을 추가하는 경우doSomething()
의 가시성이 감소 되었기 때문에 마크의 코드에서
차입, 다음은 컴파일되지 않습니다.
class Super {
public void doSomething() {
System.out.println("Foo");
}
}
class Sub extends Super {
private void doSomething() {
System.out.println("Harr!");
}
}
또한 때 새 개인 방법 원인 컴파일 중 오류 를 추가하거나 다른을 행동 프로그램으로 이어질 것인가?
개인적인 방법이 이전보다 더 구체적이면 프로그램 동작을 조정할 수 있습니다. 아래 예제는 "foo"를 출력하는 다른 방법을 추가 (주석 해제)하지 않는 한 "bar"를 인쇄합니다.
public class Test {
public static void main(String[] args) throws Exception {
String foo = "hello";
methodOne(foo);
}
// private static void methodOne(String args) {
// System.out.println("foo");
// }
private static void methodOne(Object arg) {
System.out.println("bar");
}
}
두 번째 경우의 좋은 예. 그리고 이것은 첫 번째 질문에 대답하는 데 사용될 수 있습니다. 'methodOne (Object)'가'public'이고 어떤 코드가 그것을 호출하는 경우,'methodOne (String)'을 public으로 만들면 컴파일러 오류없이 좀 더 구체적인 메소드를 호출하게됩니다 (그러나 재 컴파일이 필요합니다). –
그리고 너는 너 자신을 이렇게하려고하지 않으니까 ?? – TheLostMind
숙제 냄새가 나는데, 지금까지 시도한 것을 보여줄 수 있습니까? –
하나의 게시물에서 두 개의 질문이 관련되어 있어도 매우 불만 스럽습니다. –