public class Cat {
public static int catCount = 0;
public Cat(){
catCount++;
}
protected void finalize() throws Throwable{
catCount--;
}
public static void main(String[] args) {
}
}
Задача на счётчик котов.Понимаю, зачем нам нужно создавать protected void, но не понимаю, зачем сначала вводить public Cat, если уже есть public class CatEdvard
4 уровень
Help
Решен
Комментарии (8)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Vadim Matsidonsky
2 декабря 2019, 13:35
Странно, но у меня сработало лишь без модификатор.
Cat() {
catCount++;
}
А при использовании любого модификатора (public или protected или private) - задача не решалась. Не понятно почему именно нужно использовать (package)?
0
IceBergMaster
2 декабря 2019, 13:41
Валидацию проходит.
0
Владислав
21 июля 2018, 12:32
public Cat() { //1. Добавь в класс Cat конструктор без параметров public Cat().
catCount ++; //2. Конструктор класса должен на 1 увеличивать значение переменной catCount.
}
public void finalize() { //3. Добавь в класс Cat метод finalize. 4. Метод finalize ничего не должен возвращать (тип возвращаемого значения void).
catCount --; //5. Метод finalize должен уменьшать переменную catCount на 1.
}
+2
Владислав
21 июля 2018, 12:32
public void finalize() {
catCount --;
}
0
Another Life
21 июля 2018, 00:33решение
если вы этот кусок кода имеете ввиду:
то это конструктор объекта. если он не будет public, например будет private, но его никто не сможет вызвать, если его не будет, то будет конструктор по умолчанию, а он ничего не делает, те код catCount++ выполняться не будет. Т.е. при создании объекта он автоматически читается. +5
Edvard
21 июля 2018, 00:42
А почему нельзя было сделать так?
public class Cat {
public static int catCount = 0;
catCount++;
зачем вводить отдельную переменную public Cat?
Спасибо
0
Another Life
22 июля 2018, 17:20
public Cat - это не переменная, это конструктор. Он исполняется при создании объекта, всегда. Т.е. у вас добавляется кошка, значит вызывается конструктор (конструирует объект кошка), чтобы не делать дополнительных методов, что добавилась еще одна кошка, которую надо посчитать, это можно прописать в конструкторе (он всего вызывается). Что и сделано.
А просто где написать catCount++; без привязки к методу - так нельзя (только в main можно, но мы не о нем)
+3
Edvard
23 июля 2018, 01:30
Уже посмотрел видеурок, как раз одной темы до этого не хватало, но спасибо!
0