Выполнил задание, но сам не понял что сделал, прочитал уже статьи про методы, объекты, классы, но так и не уяснил на примере вот этой задачи
public class Cat {
  public String name;
    public int age;
    public int weight;
    public int strength;

    public Cat() {
    }

           public boolean fight(Cat anotherCat) {
        this.name = "Vaska";
        anotherCat.name = "Barsik";
        if (this.age * this.weight + this.strength > anotherCat.age * anotherCat.weight + anotherCat.strength)
        return true;
               else {
            return false;
        }
        }
    public static void main(String[] args) {
    }
}
что такое public Cat() ? это класс,это метод, или переменная? если это метод то зачем он тут если никак не задейтсвован, если класс, почему не написано public class, если переменная, почему не int или String, а просто public Cat() Как этак конструкция влияет на дальнейшую задачу?