План уровня:
- Знакомство с классами: написание своих классов, конструкторы
- Пакеты
- Импорт классов
- Создание классов, геттеров и сеттеров
- Инициализация объектов
- Конструкторы
Что еще можно посмотреть на досуге:
Почитать про видимость переменных
Почитать про классы
Нашли классную ссылку к материалу данной темы? Добавьте ее сюда в виде комментария.
Возможно, именно Ваша ссылка поможет другому человеку стать программистом и улучшить свою жизнь!
Уровень 6: план уровня и доп. материалы
Вернуться к обучению
java онлайн на JavaRush
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Некоторые пункты(напр. об ошибках начинающих) еще не были пройдены, сложновато для понимания.
Я что-то неправильно понял и не нашел ответа в приложенных материалах.
Модификатор static для переменных — делает переменную общей для всего класса (не для объектов класса), метод static соответственно так же относится к работе с классом (статическими переменными, например), а что делает модификатор static при объявлении КЛАССА? Встретился с этим на ур5, лек12, зад1. Там объявляется
Вот сижу думаю.
Кто-нибудь просветит на эту тему?
public static void main(String args[]) {
String test1 = «Today is »;
appendTodaysDate(test1);
System.out.println(test1);
}
public static void appendTodaysDate(String line) {
line = line + (new Date()).toString();
}
Далее, написано следующее:
«В примере выше студент хочет изменить значение локальной переменной test1,
присваивая новое значение параметру line в методе appendTodaysDate.
Естественно это не сработает. Значение line изменится, но значение test1
останется прежним.
Эта ошибка возникает из-за непонимания того, что (1) java объекты всегда
передаются по ссылке и (2) строки в Java неизменяемы.
Чтобы исправить ошибку в примере выше, нужно или возвращать строку из
метода, или передавать объект StringBuffer как параметр методу вместо String.»
И приводится 2 правильных варианта, в одном из которых в качестве строки выступает объект StringBuffer, а в другом строка возвращается из метода и присваивается переменной test1.
В конце добавлено примечание переводчика:
«вообще-то понять в чем ошибка не так просто.
так как объекты передаются по ссылке, то значит line ссылается туда же,
куда и test1. А значит создавая новый line, мы создаем новый test1.
в неправильном примере все выглядит так, как будто передача String идет
по значению, а не по ссылке.»
Проблема в том, что данное примечание так и не помогает понять: а в чем, собственно, была ОШИБОЧНОСТЬ изначального варианта? Дело в том, что там всё действительно выглядит так, будто бы строка передается по значению. Например, в варианте со StringBuffer всё понятно: в метод передается ссылка на объект, для которого по ссылке вызывается фун
Переменные делаем private, сеттеры и геттеры публичные. От кого мы прячем переменные. Что они принимают и кому отдают, для чего они это делают. Каша как в голове, так и в материале, который я читал. Доступного объяснения нигде не нашёл.
Заранее благодарю за помощь.
old.intuit.ru/department/pl/javapl/6/
например: private int age;
Так вот чтобы получить это значение в другом месте и применяют метод getAge либо установить setAge.
Вот ссылка:Запись методов toString
Иными словам — есть ли какая нибудь строгая закономерность в присвоении имен в таких случаях. (То есть если мне необходимо создать класс «В» с некоторым количеством инициализаторов, обязательно ли я должен создать переменную bname или название переменной может быть любое.)
Ссылки активны должны быть или что?
План лекции:
Знакомство с классами: написание своих классов, конструкторы
Пакеты
Импорт классов
Создание классов, геттеров и сеттеров
Инициализация объектов
Конструкторы
— что за команда readText()?
— почему нельзя создавать инициализаторы с одинаковыми типами данных?
public void initialize(String name, int growth, String color)
public void initialize(String secondcolor, int growth, String lastname)
Т.е.вроде бы по контексту — создаётся файл с путём от другого файла, в той же папке, но название у второго файла такое-же, поэтому будет ошибка при попытке создать два файла с одинаковым именем в одной папке. Хотя, формально говоря, мы не знаем, что делает конструктор класса в данном случае, этот код ведь может не быть продолжением предыдущих кусков.
Спасибо заранее.
2. file2 получает имя «a.txt» только в качестве параметра. Затем этот параметр используется как составная часть для инициализации поля filename объекта file2. На выходе file2 будет иметь filename «c:\\data\\a.txt»
В коде
и
непонятно, можно ли объявлять одноимённые методы (initialize), и как компилятор будет разбираться, какой из них использовать?
И второе.
Почему file2 получает имя «a.txt». Это же копия оригинального файла, создаваемая в той же директории. Она не может иметь такое же имя. file2 должен получать имя типа «a-tempcopy.txt»