2015-08-12 4 views
-1

Я получаю много ошибок над тем, что должно быть простым конструктором для класса истребителей. Кроме того, они выглядят как незаконный запуск ошибок выражения или ; ожидалось ошибок, по большей части.простой конструктор генерирует ошибки

Это мой код:

class Fighter(String name, int health, int attack, int defense){ 
    //default constructor 
    //input constructor 

     private String name; 
     private int health; 
     private int attack; 
     private int defense; 

     private String setName(){ 
     this.name = name; 
     } 

     public String getName(){ 
     return name; 
     } 

     private int setHealth(){ 
     this.health = health; 
     } 

     public int getHealth(){ 
     return health; 
     } 

     private int setAttack(){ 
     this.attack = attack; 
     } 

     public int getAttack(){ 
     return attack; 
     } 

     private int setDefense(){ 
     this.defense = defense; 
     } 

     public int getDefense(){ 
     return defense; 
     } 
    } 

Что я делаю, чтобы произвести все эти ошибки? Связано ли это с частными или общественными методами?

+1

Это не то, как вы определяете конструктор. –

+0

что мне не хватает? –

ответ

0

Методы идут в классе, а не в конструкторе. Я думаю, что вы хотели что-то подобное,

class Fighter { 
    public Fighter(String name, int health, int attack, int defense) { 
     setName(name); 
     setHealth(health); 
     setAttack(attack); 
     setDefense(defense); 
    } 

    private String name; 
    private int health; 
    private int attack; 
    private int defense; 

    private void setName(String name) { 
     this.name = name; 
    } 

    public String getName() { 
     return name; 
    } 

    private void setHealth(int health) { 
     this.health = health; 
    } 

    public int getHealth() { 
     return health; 
    } 

    private void setAttack(int attack) { 
     this.attack = attack; 
    } 

    public int getAttack() { 
     return attack; 
    } 

    private void setDefense(int defense) { 
     this.defense = defense; 
    } 

    public int getDefense() { 
     return defense; 
    } 
} 
0

Это не, как вы определяете конструктор. Вызывается конструктор при создании объекта (new Fighter()). Это особый вид метода, поэтому в нем могут быть только заявлений. Это:

private String setName(){ 
    this.name = name; 
} 

не является заявлением, поэтому есть ошибки. Вышеприведенный метод представляет собой еще один отдельный метод. Вы должны определить этот тип материала в классе , а не в конструкторе . Вытяните их так:

public class Fighter { 
    public Fighter(String name, int health, int attack, int defense) { 
     setName(name); 
     setHealth(health); 
     setAttack(attack); 
     setDefense(defense); 
    } 

    private String name; 
    private int health; 
    private int attack; 
    private int defense; 

    private void setName(String name) { 
     this.name = name; 
    } 

    public String getName() { 
     return name; 
    } 

    private void setHealth(int health) { 
     this.health = health; 
    } 

    public int getHealth() { 
     return health; 
    } 

    private void setAttack(int attack) { 
     this.attack = attack; 
    } 

    public int getAttack() { 
     return attack; 
    } 

    private void setDefense(int defense) { 
     this.defense = defense; 
    } 

    public int getDefense() { 
     return defense; 
    } 
} 

Теперь все методы находятся за пределами конструктора. Поля, методы и конструктор (ы) являются компонентами класса, а не конструктором.