1

From my understanding this is what I am attempting to do, I am creating an interface to outline what a character is,

I am creating a class to define each method that a Character will use.
In that same class I create a new object of that character as many times as I like.

So if I want to make 10 characters I just do that all from the same class?

Currently I am attempting to create one character by giving it attributes.

Then I want to System.out.prinln but when I compile I get

javac Hero.java
Hero.java:3: error: interface expected here
public class Hero implements Character {
                             ^
1 error

I changed Character to Player and this is what I get,

javac Hero.java Hero.java:3: error: cannot find symbol public class Hero implements Player {                              ^   symbol: class Player 1 error

2 files Character Interface and Hero Class public interface Character {

        // define methods that must be defined across all character types
        int getLevel();
        String getPrimaryAttribute();
        String getAttackType();
        String getAbility1();
        String getAbility2();
        String getAbility3();
        String getAbility4();
        double getStrength();
        double getStrengthMultiplier();
        double getAgility();
        double getAgilityMultiplier();
        double getIntelligence();
        double getIntelligenceMultiplier();
        int getHealth();
        int getMana();
        int getDamageMin();
        int getDamageMax();
        int getRange();
        double getArmor();
        int getMovement();

    }

public class Hero implements Character {

        private int level;
        private String primaryAttribute;
        private String attackType;
        private String ability1;
        private String ability2;
        private String ability3;
        private String ability4;
        private double strength;
        private double strengthMultiplier;
        private double agility;
        private double agilityMultiplier;
        private double intelligence;
        private double intelligenceMultiplier;
        private int health;
        private int mana;
        private int damageMin;
        private int damageMax;
        private int range;
        private double armor;
        private int movement;

        //default constructor
        public Hero(
                int level,
                String primaryAttribute,
                String attackType,
                String ability1,
                String ability2,
                String ability3,
                String ability4,
                double strength,
                double strengthMultiplier,
                double agility,
                double agilityMultiplier,
                double intelligence,
                double intelligenceMultiplier,
                int health,
                int mana,
                int damageMin,
                int damageMax,
                int range,
                double armor,
                int movement
                    ) {

        } // End Constructor

        public static void main (String[] args) {
            DrowRanger();

            }

        private static Object DrowRanger() {
        Hero DrowRanger = new Hero(
              0,
              "Agility",
              "Ranged",
              "Frost Arrows",
              "Gust",
              "Precision Aura",
              "Marksmanship",
              17,
              1.9,
              26,
              1.9,
              15,
              1.4,
              473,
              195,
              44,
              55,
              625,
              0.64,
              300);

        System.out.println(DrowRanger);
        return DrowRanger();
}


        // getters and setters - required to implement ALL from interface
        public int getLevel() {
            return this.level;
        }

        public String getPrimaryAttribute() {
            return this.primaryAttribute;
        }

        public String getAttackType() {
            return this.attackType;
        }

        public String getAbility1() {
            return this.ability1;
        }

        public String getAbility2() {
            return this.ability2;
        }

        public String getAbility3() {
            return this.ability3;
        }

        public String getAbility4() {
            return this.ability4;
        }

        public double getStrength() {
            return this.strength;
        }

        public double getStrengthMultiplier() {
            return this.strengthMultiplier;
        }

        public double getAgility() {
            return this.agility;
        }

        public double getAgilityMultiplier() {
            return this.agilityMultiplier;
        }

        public double getIntelligence() {
            return this.intelligence;
        }

        public double getIntelligenceMultiplier() {
            return this.intelligenceMultiplier;
        }

        public int getHealth() {
            return this.health;
        }

        public int getMana() {
            return this.mana;
        }

        public int getDamageMin() {
            return this.damageMin;
        }

        public int getDamageMax() {
            return this.damageMax;
        }

        public int getRange() {
            return this.range;
        }

        public double getArmor() {
            return this.armor;
        }

        public int getMovement() {
            return this.movement;
        }

    // This is where the setters are.

        public void setLevel(int level) {
            this.level = level;
        }

        public void setPrimaryAttribute(String primaryAttribute) {
            this.primaryAttribute = primaryAttribute;
        }

        public void setAttackType(String attackType) {
            this.attackType = attackType;
        }

        public void setAbility1(String ability1) {
            this.ability1 = ability1;
        }

        public void setAbility2(String ability2) {
            this.ability2 = ability2;
        }

        public void setAbility3String(String ability3) {
            this.ability3 = ability3;
        }

        public void setAbility4(String ability4) {
            this.ability4 = ability4;
        }

        public void setStrength(double strength) {
            this.strength = strength;
        }

        public void setStrengthMultiplier(double strengthMultiplier) {
            this.strengthMultiplier = strengthMultiplier;
        }

        public void setAgility(double agility) {
            this.agility = agility;
        }

        public void setAgilityMultiplier(double agilityMultiplier) {
            this.agilityMultiplier = agilityMultiplier;
        }

        public void setIntelligence(double intelligence) {
            this.intelligence = intelligence;
        }

        public void setIntelligenceMultiplier(double intelligenceMultiplier) {
            this.intelligenceMultiplier = intelligenceMultiplier;
        }

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

        public void setMana(int mana) {
            this.mana = mana;
        }

        public void setDamageMin(int damageMin) {
            this.damageMin = damageMin;
        }

        public void setDamageMax(int damageMax) {
            this.damageMax = damageMax;
        }

        public void setRange(int range) {
            this.range = range;
        }

        public void setArmor(double armor) {
            this.armor = armor;
        }

        public void setMovement(int movement) {
            this.movement = movement;
        }

    } // End Character Class
wuno
  • 9,547
  • 19
  • 96
  • 180
  • When you asked your first question on this topic, in my [answer](http://stackoverflow.com/questions/24976657/calculating-damage-between-two-numbers-in-java/24976677#24976677) I used the name CharacterType instead of Character for the base class. Now you know why. – Eran Jul 27 '14 at 21:06

1 Answers1

4

Java has a Character class defined already (in package java.lang).

The Character class wraps a value of the primitive type char in an object. An object of type Character contains a single field whose type is char.

EDIT - This package java.lang is imported by default and so the interface name clashes with the Character class defined in this package. Hence, the issue. It's always better to avoid using exactly same names anyway.

Swapnil
  • 8,201
  • 4
  • 38
  • 57
  • This isn't a full answer. You need to explain about the package that `Character` is in and that `java.lang` is always included in class. Any that this causes a name clash. – Boris the Spider Jul 27 '14 at 20:56
  • @NichoDiaz, no - the answer is correct but incomplete. – Boris the Spider Jul 27 '14 at 20:57
  • Oh so your saying the error is that I names the interface Character? – wuno Jul 27 '14 at 20:57
  • @BoristheSpider I added the part you mentioned. Thanks. – Swapnil Jul 27 '14 at 20:59
  • I changed Character to Player and this is what I got, `javac Hero.java Hero.java:3: error: cannot find symbol public class Hero implements Player { ^ symbol: class Player 1 error` – wuno Jul 27 '14 at 21:04