如何将我的子类中的方法用于主要方法?

时间:2016-04-19 17:29:06

标签: java

我试图在我的主类hangman中调用我的子类hangmanwords中的方法。这是代码:

public class hangManWords {
    //declares words
    String [] words = { "Highschool", "Government", "Continents", "Professors", "Programmer", "Dealership", "Controller", "Motorcycle", "Lightsaber"}; 

    public void randomizeWords(String [] words) {
        //randomize the words
        for (int i = words.length - 1; i > 0; i--) {
            //generate a random index
            int j = (int)(Math.random() * (i + 1));

            //swaps list i with list j
            String temp = words[i];
            words[i] = words[j];
            words[j] = temp;
        }
    }

    public  String getNextWord (String [] words) { //gets the next random word
        for (int i = 0; i < words.length; i++) {

            if (words[i] == null) {
                continue;
            }
            String temp = words[i];
            words[i] = null;
            return temp;
        }
        return null;

    }
}

这是我主要的部分,我正在尝试使用它:

randomizeWords(words); //randomly generates a word from the word list

//players first word
guessThisWord = getNextWord(words);
guessThisWord = hideWord(guessThisWord, originalWord);//hides the word with _

3 个答案:

答案 0 :(得分:0)

在基类中声明虚方法,在子类中实现它们。现在,如果对象是子类类型,那么在基类中声明的方法中对这些虚方法的所有调用都将调用子类方法。

答案 1 :(得分:0)

  

其他人已经提到了如何投射物体以获得答案   对你的问题,但首先提出这个问题   一个可能的设计问题。一些可能的原因:

     
      
  • 该方法位置错误。
  •   
  • 调用该方法的代码位置错误。
  •   
  • 子类不应扩展其他类。最好选择合成而不是继承。      在继承时,代码应遵循Liskov替换原则。

  •   
  • 这些课程没有凝聚力,他们有不止一个职责,应该分成多个班级。

  •   

Call a method of subclass in Java

答案 2 :(得分:0)

你的意思是这样吗?

public class Hangman {

    public static void main(String[] argv) {
        // Instantiate the class.
        hangManWords g = new hangManWords();

        // Call the methods...

        // g has access to `words` so no need for an argument.
        g.randomizeWords(); //randomly generates a word from the word list

        // g has access to `words` so no need for an argument.
        //players first word
        guessThisWord = g.getNextWord();

        // I don't see `hideWord` and `originalWord` defined, but assume they are somwehere.
        guessThisWord = g.hideWord(guessThisWord, originalWord); //hides the word with _
    }
}

备注

您应该考虑使用大写字母class

来启动HangManWords个名称