2012-06-06 2 views
0

'Person'클래스와 'Survey'클래스를 가지고 있다고 가정 해 봅시다. Survey는 하위 클래스이고 Person 클래스는 부모입니다. Person 클래스는 내가 작성한 첫 번째 클래스 였으므로 자식 클래스가 있기 때문에 main 메서드를 정의했습니다. 부모 클래스의 main 메서드에서 자식 클래스의 메서드를 호출 할 수 있습니까 (또는 main 메서드를 계속 전달해야합니까? 비록 내가 결코 이것이 절대 필요하지 않을 것이라는 확신이 있지만 ... 계층 구조에서 가장 낮은 계층입니다.)? 그렇다면 이것은 자식 클래스가 부모 클래스의 속성을 상속 받지만 부모 클래스는 자식 클래스의 속성을 상속받지 않는다는 개념에 직관적이지 않은가? 답장을 보내주십시오. 미리 감사드립니다.main 메소드를 부모 클래스에 둘 수 있습니까? 그렇다면 자식 객체가 그 기본 메소드 내에서 인스턴스화 될 수 있습니까?

또한 별도의 클래스를 가지고있는 또 다른 게시물을 읽었을 것입니다. main 메소드에 대한 driver.java가 있습니다. 따라서 모든 클래스가이 클래스로 가져와 져야만 다른 클래스의 메소드를 호출 할 수 있습니다. 주요 방법?

내 질문에 너무 복잡하지 않기를 바랍니다.

+7

관련없는,하지만 어떻게'Survey''Person'입니다! –

+3

일반적으로 상위 클래스는 해당 하위 클래스에 대해 알지 못합니다. 임의의 기능을 가진 임의의 수의 하위 클래스가있을 수 있습니다. –

+0

"코드를 움직이지 않고 내 코드를 어떻게 다시 디자인해야합니까?"라는 질문을하는 것 같습니다. 대답은 "너는하지 않는다"이다. 앱의 작동 방식을 변경하면 코드를 임의로 뒤섞어 야합니다. 앱 진입 점이되는 클래스를 변경하면 main 메소드를 이동해야합니다. 간단합니다. – jtahlborn

답변

1

  1. ,이 Constructor chaining라고합니다.

  2. 모든 instance variable은이 과정에서 declared and initialized입니다.

  3. 그리고 most important는 서브 클래스의 생성자가 호출 때, till it reaches the subclass on whose class new was called, 당신은 볼 것이다 그 다음, Object 클래스까지 등등 1st creating the Object class object, then the class under를 수퍼 클래스로 이동하고 있다는 것입니다 그 constructor of the super class is called first then its subclass's

그리고 당신의 위의 질문을 위해 나는 또한 내가 제시 한 이론적 설명과 적절하게 맞는 예제를 만들었습니다.

예 :

 public class a { 
    public static void main(String[] args) { 

     B b = new B(); 
     b.go(); 
    } 
} 

class B extends a{ 


    public void go(){ 

     System.out.println("hello"); 

    } 
} 
+0

고마워요.이 말은 당신이 의미하는 바를 이해하는 데 도움이됩니다. 이 문제를 해결해 주셔서 다시 한 번 감사드립니다. – anonuser0428

+0

당신은 환영합니다 –

0

글쎄, 나는 그것을 시험해 보았고 부모 클래스에 main 메소드를 넣어도 잘 동작한다. 그러나 나는 약간의 독서를했으며 관행은 클래스에 main 메소드 만 있고 다른 메소드는 없다는 것과 같이 별도의 클래스에 main 메소드를 생성하는 것입니다. 이렇게하면 어떤 경우에는 효율성이 향상되고 훨씬 깨끗한 방법으로 작업을 수행 할 수 있습니다. 당신은 다음의 sub class typeimmediatelySuper class constructor is callednew를 호출하여 서브 클래스의 인스턴스를 생성하고,이 going tillObject class를 유지하면 내가 당신에게 설명하게

관련 문제