1
을 감안할 때 :Subclass 생성자가 Superclass 생성자로부터 변수를 상속합니까?
public class Counter {
private int count;
public Counter() {
count = 5;
}
public void increment() {
count++;
}
public void reset() {
count = 0;
}
public int value() {
return count;
}
}
내가 (이 암시 적으로 생성되지 않음) 정의 함수와 서브 클래스가있는 경우, 서브 클래스의 생성자는 슈퍼 클래스 생성자에서 변수 인스턴스 count
을 상속 무엇입니까? private count
과 관련하여 약간 혼란 스럽기 때문에 나는 이것을 묻습니다.
public class ModNCounter extends Counter {
int modCount;
public ModNCounter(int n) {
modCount = n;
}
@Override
public int value() {
return super.value() % modCount;
}
public static void main(String[] args) {
ModNCounter modCounter = new ModNCounter(3);
System.out.println(modCounter.value()); //prints out 5 % 3 = 2
modCounter.increment(); // count = 6
System.out.println(modCounter.value()); //prints out 6 % 3 = 0
modCounter.reset(); // count = 0
modCounter.increment(); // count = 1
System.out.println(modCounter.value()); //print 1 % 3 = 1
}
}
객체 modCounter
는 count
변수가 있습니까? 그렇지 않다면, modCounter.increment()
은 에러를 제공하지 않나요?
예 아니요. 'count '가 있지만 개인적인 것이기 때문에 직접 액세스 할 수는 없습니다. 공개적으로 선언 된 메소드에 액세스 할 수 있습니다. 이것은 꽤 표준 클래스 상속입니다. – markspace
자습서에 따르면 'private'멤버 (필드 및 메서드)는 하위 클래스에 상속되지 않는다고합니다. 그들은 "거기"에 있지만 서브 클래스는 그것들에 접근 할 수 없기 때문에 거기 있지 않습니다. https://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html – markspace