나는 모든 기계 객체가 정적 필드 'id'를 사용하여 자동으로 생성 된 코드를 작성한 코드를 작성했습니다. Java에서 다형성을 이해하려고합니다. 예상되는 출력은 1 2 3 4이지만 출력은 1 2 4 6입니다. 왜 이런 현상이 발생했는지 설명 할 수 있습니까? Camera
생성자도 Machine
생성자를 호출하는자바 다형성 동작
class Machine{
static int id=1;
private int mach_id;
private String name;
Machine(){
this.mach_id = id;
id++;
}
public int getId(){
return this.mach_id;
}
}
class Camera extends Machine {
private int mach_id;
Camera(){
this.mach_id = id;
id++;
}
}
public class App {
public static void main(String[] args){
Machine mach = new Machine();
Camera cam = new Camera();
Machine mach1 = new Camera();
Machine mach2 = new Camera();
System.out.println(mach.getId());
System.out.println(cam.getId());
System.out.println(mach1.getId());
System.out.println(mach2.getId());
}
}
Machine 생성자에서 한 번, Camera 생성자에서 한 번씩 두 번씩 ID를 증가시킵니다. 당신의 카메라 클래스는 mach_id 필드를 필요로하지 않는다. 기계는 그 값에 대한 게터를 제공해야한다. 생성자에 System.out.println을 추가하고 워크 플로를 봅니다 ... – MadProgrammer
Ok. 그러나 내가 이해하지 못하는 것은 카메라 오브젝트를 생성 할 때 2 씩 증가하지 않는다는 것입니다. 즉 카메라를 만들었을 때 cam = new Camera()가 하나씩 만 증가했습니다. 그래서 새로운 Camera()를 사용하여 Machine 객체를 만들 때 실제로 Camera 생성자 만 호출합니다. 그래서이 경우 왜 2 씩 증가합니까? 나는 순진이라고 들릴지도 모르지만 나는 OOPs에 익숙하지 않으므로 나를 참아주십시오. 감사합니다. –