2017-12-28 50 views
0

참고로 자바에 고등학생을 한 명 찍었으므로이 질문은 매우 쉽게 대답해야합니다. 매개 변수에 새로운 값을 넣지 않고 클래스 메서드, 즉 생성자를 새 개체로 호출하는 방법을 찾는 데 문제가 있습니다.매개 변수 값을 재설정하지 않고 생성자를 참조 하시겠습니까?

public Skills(int courage, int intelligence, int stamina, int crafting, 
    int blacksmithery, int herbalism, int slingSkill, 
    int bowSkill, int swordSkill, int armor, int stealth, int 
    lifeForceSkill){ 
     this.courage = courage; 
     this.intelligence = intelligence; 
     this.stamina = stamina; 
     this.crafting = crafting; 
     this.blacksmithery = blacksmithery; 
     this.herbalism = herbalism; 
     this.slingSkill = slingSkill; 
     this.bowSkill = bowSkill; 
     this.swordSkill = swordSkill; 
     this.armor = armor; 
     this.stealth = stealth; 
     this.lifeForceSkill = lifeForceSkill; 
} 

을 그리고 내가 그것을 내 주요 방법을 설정할 때이 할 : 생성자는 다음과 같습니다

Skills skills = new Skills(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); 

1로 모든 레벨을 설정 한 후 내가 함께 작업 할 수있는 객체 기술을 가지고하는 방법을 후에. (나는 생성자와 객체가 섞여있는 상태가 되었는가? 틀렸을 때 나는 그것들을 모두 마음 속으로 바꾼다. 나는 적어도 그것과 일관성이 있다고 생각한다).

문제는 필자가 주 클래스의 별도 메서드에서 호출 할 스킬 클래스에 toString() 메서드가 있다는 것입니다. 내가 여기에 만들 개체가 난 그냥 스킬 (쓰기 수 없기 때문에 오류)가 발생 물론

else if (optionChoice.equalsIgnoreCase("View Skills")){ 
     Skills skills = new Skills(); 
     System.out.println(skills.toString()); 
     break; 
    } 

; 매개 변수에 대해 12 개의 값을 모두 넣지 않아도됩니다. 그렇다면 Skills 클래스의 메서드를 호출 할 때 개체를 만들 수 없는데 어떻게 호출해야합니까? 값이 변하지 않는 기능성은 필수적입니다. 프로그램에서 변수와 변경이 있으므로 값을 입력 할 수 없습니다.

나는 그것이 아마도 기본적인 기본 질문 인 것을 알고있다. 그러나 그것은 내가 가지고있는 수준이다. 그래서 어떤 초보적인 대답이 도움이 될 것이다. 시간 낭비하지 말아야한다. 미리 감사드립니다!

+0

더 구현 수준이기 때문에 이것은 유래에서 더 나은 수 있습니다. 질문,'toString()'을 수행하기 위해 새로운'Skills' 객체를 만들려고합니까? 에 처음 변경 한 내용을 수정하면 컴파일 오류를 수정하더라도 해당 내용이 표시되지 않습니다. 또한'println()'이'Object'를 취할 수 있기 때문에'System.out.println (skill)'도 마찬가지로 작동합니다. 'Object'의 경우 자동적으로'toString()'을 호출합니다. –

+0

유용 할 수 있습니다. https://study.com/academy/lesson/static-vs-non-static-methods-in-java.html – algrid

답변

1

스킬 개체를 기본 메서드 내에서 만드는 대신 정적 필드로 만들지 않는 이유는 무엇입니까?

public class WhateverYourClassIsCalled { 
    static Skills skills = new Skills(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); 

    public static void main(String[] args) { 
     // ... 
    } 

    void yourOtherMethod() { 
     // ... 
     else if (optionChoice.equalsIgnoreCase("View Skills")) { 
      System.out.println(skills.toString()); 
      break; 
     } 
    } 
} 
+1

또는 정적 전역을 피하려면 필요한 메서드를 전달합니다. yourOtherMethod (기술); – CandiedOrange

관련 문제