2012-08-30 4 views
0

다른 클래스 (Class2)를 상속하는 클래스 (클래스 1이라고 부름)가 있습니다. 내가 뭘하려고 Class1에서 상속시 Class2에서 costructor 메서드를 실행하는 것입니다.상속 된 클래스 초기화

// Class1 
public class Class1 : Class2 
{ 
    public Class1() 
    { 

    } 
} 
// Class2 
public class Class2 
{ 
    public Class2() 
    { 
     //this is the function I want to run 
    } 
} 

그러나 나는 이런 식으로 동작하지 않습니다 :

나는 이런 식으로 뭔가를보고있다 가정하자.
Class1에서 Class2() 생성자 메서드를 실제로 호출하지 않아도이 작업을 수행 할 수 있습니까?

+0

생성자는 메서드 또는 함수가 아니라 단지 생성자입니다. – Servy

답변

6

생성자를 잘못 선언하고 있습니다. void 키워드를 제거하십시오 :

// Class1 
public class Class1 : Class2 
{ 
    public Class1() 
    { 

    } 
} 
// Class2 
public class Class2 
{ 
    public Class2() 
    { 
     //this is the function I want to run 
    } 
} 

기본 클래스의 기본 생성자가 자동으로 실행됩니다. 기본이 아닌 생성자를 호출 할 경우, 당신은 이런 식으로 작업을 수행 할 수 있습니다

// Class1 
public class Class1 : Class2 
{ 
    public Class1() : base("argument") 
    { 

    } 
} 
// Class2 
public class Class2 
{ 
    public Class2() 
    { 
    } 
    public Class2(string theParameter) 
    { 
     //code for initializing the object with the string parameter 
    } 
} 
+0

죄송합니다, 그게 내 코드에 있었어. 나는 생각없이 간단히 여기에 추가했습니다. 그러나 그것은 나를 위해 어느쪽으로도 작용하지 않습니다. –

+0

@ GabiBarrientos 어떻게 작동하지 않는 것을 알고 있습니까? 게시 한 코드 ('void' 키워드 포함)는 컴파일되지 않습니다. 코드가 컴파일에 실패 했습니까? 아니면 컴파일 중이지만 예상대로 작동하지 않습니까? – phoog

+0

내가 Debug.WriteLine ("test")를 실행하려고했기 때문에; Class2의 생성자에서. 그러나 당신이 적어 두 번째 코드 조각을 사용하면 실제로 나를 위해 작동합니다. 감사. 나는 이것을 나의 대답으로 받아 들일 것이다. 그러나 나는 2 분을 기다릴 필요가있다. –

0

당신은 항상 Class2의 생성자를 호출합니다. 코드 base()이 없으면 추가됩니다. Class2에 매개 변수없는 생성자가없고 기본 생성자를 명시 적으로 호출하지 않으면 컴파일 오류가 발생합니다.

Class1이있는 경우 Class2이 있어야합니다. 먼저 Person없이 C_Sharp_Developer을 가질 수 없습니다.

+1

첫 번째 단락은 "... 컴파일러 오류가 발생합니다."로 끝나야합니다. (그리고 생각할 때, 조건은 "Class2가 접근 할 수있는 매개 변수없는 생성자를 가지고 있지 않으면 ...") – phoog

+0

@phoog "컴파일 오류"비트를 변경했는데, 그것이 내가 의미 한 것이기 때문에 쓰기. 나는 접근성에 대한 요점을 남겨 두었으므로 내가하지 않았을 때 당신의 생각이 당신의 생각과 견줄 수있다;) –