2013-10-01 7 views
0

내가 이렇게 보이는 자바 코드를 수퍼 클래스를 오버라이드하는 일부 메소드. 생성자는 정확히 동일한 코드를 가지고 있습니다. 이 중복 된 코드는 어떻게 피할 수 있습니까? 나는 객체가 생성자를 상속받을 수 없다는 것을 안다.방지 중복 코드는

답변

6

생성자가 동일하면 Dog에 필요하지 않습니다. 생성자에 Dog에서 액세스하려면 super(name);으로 전화하십시오.

public class Animal { 
    Animal(String name) { 
    // some code 
    } 
} 

그리고 개에서

:

public class Dog { 
    Dog(String name) { 
     super(name); 
    } 
} 

그것은 슈퍼 클래스의 호출 '생성자는 생성자의 첫 줄 수 있어야한다는 지적 가치가있다. 그러나 super(name)을 호출 한 후에 다른 Dog 관련 코드를 계속 수행 할 수 있습니다. 예를 들어

:

public class Dog { 
    Dog(String name) { 
     // You can't put any code here 
     super(name); 
     // But you can put other code here 
    } 
} 
3

당신은 슈퍼 생성자에 위임 할 수

Dog(String name) { 
    super(name); 
} 

은 참조 : http://docs.oracle.com/javase/tutorial/java/IandI/super.html합니다.

+1

하하. 나는 이것을 정확하게 게시하려고했으나, 당신이 더 빠르기 때문에 나를 예방했다. ;) – nhgrif

+0

내 Dog 객체를 Animal 객체로 만들지 않겠습니까? –

+2

@ George Newton 그것은 이미 있습니다. –