Будем писать здесь об успехах изучения Java.
NewTesla но почему мы создавая новй обьект должны обязательно передавать параметры? ведь класс без параметров у нас)
Во первых класс явно с 4мя параметрами. Ты не описал конструктор, в котором не было бы параметров. Поэтому и получилось что параметры обязательны.
Если добавишь в класс такой конструктор
public Cat() {}
То тогда и сможешь создавать новые объекты без параметров
Cat newCatInstance = new Cat();
sda553 Во первых класс явно с 4мя параметрами. Ты не описал конструктор, в котором не было бы параметров. Поэтому и получилось что параметры обязательны.
Если добавишь в класс такой конструктор
public Cat() {}
То тогда и сможешь создавать новые объекты без параметров
Cat newCatInstance = new Cat();
itdev Нельзя так говорить. У класса есть поля, которые объявляются при описании класса. Для обращения к ним внутри класса используется ключевое слово this. Как раз в конструкторе (приведённом здесь) ты и заполняешь поля значениями параметров. Это типичный учебный пример.
qwer10707 (223) а ты по каким источникам учишь? Эт где вот мне интересно про конструктор не рассказывается?
там прост, само обучение построено на материале изучения и доп. материале)
т.е ты проходишь 4тую лекцию а там написано = ребятки, вот вам ссылка накнигу "Структуры Джава" вам она буде полезна
вот и думаешь = отвлекаться иил не, тк пока ту книжонку прочитаешь тож застопоришься
+ практика построена на задачах, методы решения которых иногда надо нагуглить саомому , т.е задачи приближены к реалиям)
а вот обьясниение классов, но нету коонструктора вроде
class Cat { public String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
sda553 Этот метод не обычный метод. Он ничего явно не возвращает.
Это метод - конструктор. Его вызов должен быть со словом new и создает новый объект класса Cat.
Cat newCatInstance = new Cat("Вольф",7,7,9);
Конструкторы в java должны называться так же как сам класс.
itdev Нельзя так говорить. У класса есть поля, которые объявляются при описании класса. Для обращения к ним внутри класса используется ключевое слово this. Как раз в конструкторе (приведённом здесь) ты и заполняешь поля значениями параметров. Это типичный учебный пример.
ок, отлично, спс)
будем посмотреть завтра, тк в день тока час на обучение
NewTesla а вот обьясниение классов, но нету коонструктора вроде
Если нет явно заданного конструктора, то джава-машина неявно добавляется конструктор по умолчанию.
public Cat() {}
который не имеет параметров и ничего не делает.
НО если хоть какой то конструктор все таки объявлен, машина этот свой конструктор-по-умолчанию не добавит и надо будет добавлять самому, если нужен конструктор без параметров
sda553 Если нет явно заданного конструктора, то джава-машина неявно добавляется конструктор по умолчанию.
public Cat() {}
который не имеет параметров и ничего не делает.НО если хоть какой то конструктор все таки объявлен, машина этот свой конструктор-по-умолчанию не добавит и надо будет добавлять самому, если нужен конструктор без параметров
спс!
УРА!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(238) создание экземпляров класса джава
Вот прям первая ссылка https://metanit.com/java/tutorial/3.1.php
(241) а ресурс то как называется ?
Второй день жжабу не учим [...]. Шо за [...]?
qwer10707 Второй день жжабу не учим [...]. Шо за [...]?
еееееееееееееееееееееееееееееееее
я доел до конструктороввввввввввввввввввввввввввввввввввввввв
УРА!!!!!!!!!!!!!!!!!!!!!!
УРА!!!!!!!!!!!!!!!!
УРАААААААААААААААА!!!!!!!!!!!!!!
ЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕ
class MyFile { private String filename = null; public MyFile(String name) { this.filename = name; } public MyFile(String folder, String name) { this.filename = folder + name; } public MyFile(MyFile file, String name) { this.filename = file.getFolder() + name; } }
qwer10707 а где реализация getFolder?
Это рефлексия уже может сделать.
qwer10707 И [...] тут this?
Это тоже норм. В конструкторах так принято при реализации. Правда, при этом параметр конструктора с именем поля совпадает
А по коду - говонокодно.
В таких случаях обычно делают два филда, folder и fileName. И выдают их конкатенацию в каком нибудь getFullPath
sda553 Это рефлексия уже может сделать.
Это тоже норм. В конструкторах так принято при реализации. Правда, при этом параметр конструктора с именем поля совпадает
А по коду - говонокодно.
В таких случаях обычно делают два филда, folder и fileName. И выдают их конкатенацию в каком нибудь getFullPath
Да, это пример какой то перед изучением дали, а так в задачах я стараюсь переменные разные делать, чтобы не совпадали с именами параметров
qwer10707 (247) а где реализация getFolder?
И [...] тут this?
Тыж инициализацию учил, [...] запись про = null, если не инициализирован не классы автоматически null?
И собственно, хули ЕЕЕЕЕ5ЕЕЕЕЕЕЕЕЕЕЕ?
itdev Бро, зачем класс мифиле, если есть класс филе
Это пример перед изучением темы просто сказали написать не вдумываясь а потом оьясняли що есть що)
(250) ну ты чо!
class MyFile { private String filename = null; public MyFile(String name) { this.filename = name; } public MyFile(String folder, String name) { this.filename = folder + name; } public MyFile(MyFile file, String name) { this.filename = file.getFolder() + name; } }
тесла, пиши нормально!
Курильщик class MyFile
{
private String filename = null;public MyFile(String name)
{
this.filename = name;
}public MyFile(String folder, String name)
{
this.filename = folder + name;
}public MyFile(MyFile file, String name)
{
this.filename = file.getFolder() + name;
}
}
а где пробел? выдели пжл
NewTesla Filename
один в один: filename
(260) да, filename.
Я бы вообще бы вот так всё переписал
public class MyFile { @Getter private String fileName; @Getter private String folder; public MyFile(String fileName, String folder) { this.fileName = fileName; this.folder = folder; } public MyFile(String fileName) { this(fileName,"./"); } public MyFile(File file) { this(file.getName(),file.getParent()); } }
Аннотация @@Getter это lombok.Getter;
А если ванильно, то было бы
public String getFileName() { return fileName; } public String getFolder() { return folder; }
(253)так потому и спросил что this юзают чтоб избавиться от коллизии
Аналог в 1с
Имя файла - реквизит формы
Процедура в форме
Процедура УстановитьИмяФайла(ИмяФайла) ЭтаФорма.ИмяФайла = ИмяФайла; // Реквизит будет установлен // ИмяФайла = ИмяФайла; // А тут не будет КонецПроцедуры
Кстати, в 1с по стандарту имя функции должно называться ТаблицаДокументов, например, а не ПолучитьТаблицуДокументов.
да, прочел уже про яву
Java does not have uninitialized variables. Fields of classes and objects that do not have an explicit initializer and elements of arrays are automatically initialized with the default value for their type (false for boolean, 0 for all numerical types, null for all reference types).[2] Local variables in Java must be definitely assigned to before they are accessed, or it is a compile error.
(269) а раньше не знал?
itdev Кстати, в 1с по стандарту имя функции должно называться ТаблицаДокументов, например, а не ПолучитьТаблицуДокументов.
а тгде стандарты 1с написаны? скинь ссыль пжл а то у меня где то была
Bumer Переделал под CancelletionToken (так правильнее) но пока есть проблемы. можешь почитать про него
.
Я не вижу изменений ... может я чё не так смотрю?
Теслу проще пристрелить ...
(274) не успел запушить, ща.
хотел от статиков еще избавиться т.е. не кошерно если будет создаваться несколько подзадач.
Я со статиками не дружу пока ...
1 использован механизм который предотвращает дедлоки
2 поменял net 4.7 на net core 5
3 заменил wait на await Task.Delay
про статик поля коротко
https://metanit.com/sharp/tutorial/3.6.php
(280) сегодня посмотрю.
webdev Переменные лучше вообще не использовать. Только в исключительно крайних случаях.
У меня весь код тогда крайний случай ...
sda553 (260) да, filename.
Я бы вообще бы вот так всё переписалpublic class MyFile { @Getter private String fileName; @Getter private String folder; public MyFile(String fileName, String folder) { this.fileName = fileName; this.folder = folder; } public MyFile(String fileName) { this(fileName,"./"); } public MyFile(File file) { this(file.getName(),file.getParent()); } }
ну хз)
как то одинаковые имена параметров и переменных класса не комильфо выгядят
вот глянь, седни задачку делал, красотища же!
package com.javarush.task.task05.task0517; /* Конструируем котиков */ public class Cat { String name,address,color; int age,weight; public Cat(String Newname) { this.name = Newname; this.color = "white"; this.age = 37; this.weight = 99; } public Cat (String Newname, int Newweight, int Newage) { this.name = Newname; this.color = "white"; this.age = Newage; this.weight = Newweight; } public Cat (String Newname, int Newage) { this.name = Newname; this.color = "white"; this.age = Newage; this.weight = 99; } public Cat (int Newweight, String Newcolor) { this.color = Newcolor; this.age = 17; this.weight = Newweight; } public Cat (int Newweight, String Newcolor, String Newaddress) { this.address = Newaddress; this.color = Newcolor; this.age = 17; this.weight = Newweight; } public static void main(String[] args) { } }
УРА!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(288) блять давай хоть раз без косяков уже
куясии, новое задание, оказывается можно и так!!!!!
ого круто!!!!!!!!!!
package com.javarush.task.task05.task0521; /* Вызов конструктора из конструктора */ public class Circle { public double x; public double y; public double radius; public Circle(double x, double y, double radius) { this.x = x; this.y = y; this.radius = radius; } public Circle(double x, double y) { this(x, y, 10); } public Circle() { this(5, 5, 1); } public static void main(String[] args) { Circle circle = new Circle(); System.out.println(circle.x + " " + circle.y + " " + circle.radius); Circle anotherCircle = new Circle(10, 5); System.out.println(anotherCircle.x + " " + anotherCircle.y + " " + anotherCircle.radius); } }
+ все рекомендую вот энтот музончик для фона
(284) я к тому, что можно использовать одно наименование. Даже на мисте тема была
https://forum.mista.ru/topic.php?id=849244
itdev Как раз наоборот, для конструктора это комильфо
ок, спс
+ как фон для работы на пять с плюсом идут видосики этого челика(но тока позитивные, т.е информационные, а тот у него разные там)
(302) Если бы я программировал на java, то использовал бы стандарт, разумеется
Пошёл как-то молодой повеса учиться программированию у Курильщика.
Покажи, что умеешь, молвил Курильщик. Юный подаван открыл свой лэптоп.
Винда! - Сумрачно изрёк сенсей. - Наверняка, ещё и Consolas. Нет! Что это?! Visual Code???!!! Где моя батога?! Хотя ладно.. молодёжь.. показывай. Подаван открыл папку с исходниками. В следующие несколько минут Курильщик долго пребывал в позе капитана Пикара. - Тащи батогу. Рано тебе учиться программированию. Придётся по старинке. Если после предстоящего урока, ты не выбросишь из головы свою затею, то будешь таскать воду и выращивать урожай, изучать каллиграфию и постигать азы чайной церемонии. Только после этого я смогу преподать тебе искусство форматирования и нотации.
(306) ты спорить удумал?!
))))))
Пометил.
открывающая скобка почему не на уровне?
о! благодарствую!!!!!!!!!!)
(313) есть разница.
Я например код читаю блоками, не построчно и не посимвольно
NewTesla вот глянь, седни задачку делал, красотища же!
Это разве скомпилируется? Имхо, нет.
Скомпилируется, я не всю ширину экрана телефона увидел.
А в чём состояло задание?
(319) может быть эта синтетика, но я в практике не встречал, чтобы в конструкторах перемешивали порядок параметров.
Обычно принято, если name это главный параметр конструктора и без него нельзя, то он в конструкторе идет первым параметром. Потом второй параметр по важности. И этот порядок не нарушают при разных реализациях конструктора.
Но я не в курсе есть ли где то такое требование, это просто из моего опыта замечание
Т.е. типичный набор конструкторов, это
Cat();
Cat(главныйпараметр);
Cat(главный параметр, второйпоВажностиПараметр)
Cat(главный параметр, второйпоВажностиПараметр, третийПоВажности)
Так в классе Circle как раз и хоккеизируется сий порядок вещей. Типа Кэт работает, но так не надо, а вот Сёркл угоден.
вот задачку задали, сколько времени уйдет , щоб ошибку найти?(прога должна выводить слово Red)
круто, я думал пропустить ее, но все таки начал исследовать)
это также помогает понять тему)
package com.javarush.task.task05.task0523; /* Конструктор */ public class Circle { public Color color; public void Circle() { color = new Color(); } public static void main(String[] args) { Circle circle = new Circle(); circle.color.setDescription("Red"); System.out.println(circle.color.getDescription()); } public class Color { String description; public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } } }
webdev Чего накинулись на чела? Это мой кореш. Не трожь Теслу. Пусть пишет как хочет. Его код, его правила.
спс, бро!
Но Курильщик вроде реал помогает улучшить написание кода, щоб я потом лямы долларов зарабатывал)
(324) тесла блять, купи нормальный курс а не для наркоманов. Эт все ищется помещением кода в иде
И запуском с дебагом
NewTesla точн!
Во-во. void тут лишнее. Поэтому срабатывает дефолтный конструктор, и color будет равен null.