Java Notes
Java Notes
/*
Dog MyDog - выделение в памяти места для ссылочной переменной MyDog типа Dog
Dog MyDog = new Dog(); - присваиваем ссылочной переменной MyDog ссылку на объект
Dog()
*/
Ссылочная переменная может ссылаться на один объект, а потом на другой, если эти
объекты одного типа
/*
int[] aboba; //Объявляем ссылочную переменную aboba, которая будет ссылаться на
массив типа int
aboba = new int[4]; //Создаём новый массив типа int с 4 элементами и присваиваем
его переменной abooba
nums[0] = 3;
nums[1] = 7;
nums[2] = -5;
nums[3] = 0;
/*
Dog[] pets; //Объявляем ссылочную переменную pets, которая будет ссылаться на
массив типа Dog
pets = new Dog[7]; //Создаём новый массив типа Dog с 7 элементами и присваиваем его
переменной pets(в массиве хранятся не объекты, а ссылки на будущие объекты, самих
объектов ещё нет)
pets[0] = new Dog(); //Теперь в первом элементе массива pets хранится ссылка на
объект типа Dog, у объекта могут быть переменные экземпляра(объекта) и методы
pets[1] = new Dog(); //Тоже самое, но это другой объект типа Dog(их теперь 2) и
ссылка на него хранится в элементе массивы pets номер 2
pets[3] = pets[0]; //Теперь в 4 элементе массива хранится ссылка на объект, ссылка
на который хранится и в первом элементе этого массива(все остальные элементы
массива хранят значение null)
*/
/*
Dog[] dogs = new Dog[4]; //Объявляем ссылочную переменную dogs, которая будет
ссылаться на массив типа Dog, создаём в массив из 4 элементов, которые будут
ссылаться на объекты типа Dog
dogs[1] = new Dog(); //Создаём объект типа Dog и присваиваем ссылку на него во
второй элемент массива dogs
dogs[1].name = "Абоба"; //Изменяем переменную экземпляра на "Абоба"(ссылка на
экземпляр хранится во втором элементе массива, а ссылка на массив хранится в
ссылочной переменной aboba)
dogs[1].bark(); //Вызываем метод bark() у экземпляра, ссылка на который хрнаится во
втором элементе массива
*/
Все экземпляры конкретного класса имеют одни и те же методы, которые могут вести
себя по-разному, в зависимости от значений переменных экземпляра
/*
void bark(int numOfBarks) { // numOfBarks - параметр
while(numOfBarks > 0) {
System.out.println("Гав!");
numOfBarks = numOfBarks - 1;
}
}
-----------------------------------------------------------------------
Dog psina = new Dog();
/*
int giveSecret(); {
return 42;
}
/*
void takeTwo(int x, int y) {
int z = x + y;
System.out.println(z);
}
-----------------------------------------------------------------------
void go() {
int lol = 7;
int bob = 1;
t.takeTwo(lol, bob);
}
*/
Переменные экземпляра нужно помечать как private, а геттеры и сеттеры как public
/*
Значения по умолчанию у переменных экземпляра:
Целые 0
Дробные 0.0
Булевые false
Ссылки null
*/
/*
for(int i, i < 10, i++) { // выполнить что-то 10 раз
}
*/
/*
int[] nums = new int[3];
nums[0] = 7;
nums[1] = 8;
nums[2] = 9;
for(int i = 0; nums[2] < 11; i++) {
if(i == 3) {
System.out.println("----------------------------------");
i = 0;
}
System.out.println(nums[i]);
nums[i]++;
}
System.out.println("----------------------------------");
System.out.println(nums[0]);
System.out.println(nums[1]);
System.out.println(nums[2]);
*/
/*
int[] numbers;
numbers = new int[6];
numbers[0] = 100;
numbers[1] = 99;
numbers[2] = 98;
for(int i : numbers) { // Каждое выполнение цикла переменаая i будет равняться
последующему элементу массива(цикл будет выполняться, пока не переберёт все
элементы)
if(i == 98) {
System.out.println("Да");
} else {
System.out.println("Нет");
}
}
*/
/*
void go() {
super.go(); // С помощью ключевого слова super можно сначала вызвать метод
родительского класса, а потом дополнить его, при этом переопределив(void go())
//Дополнение
}
*/
/*
Animal[] animals = new Animal[3]; // Теперь в массив типа Animal можно присвоить
любой объект типа Animal или объект, который наследуется от Animal
animals[0] = new Dog();
animals[1] = new Cat();
animals[2] = new Wolf();
for (int i = 0; i < animals.length; i++) {
animals[i].eat();
animals[i].roam();
}
*/
/*
class Vet {
public void giveShot(Animal animal) { // Метод принимает объект любого типа,
который наследуется от типа Animal
a.makeNoise(); // Объект, который мы передали, выполняет метод
makeNoise();
}
}
---------------------------------------------------
class PetOwner {
public void start() {
Vet v = new Vet(); // Создаём объект типа Vet
Dog d = new Dog(); // Создаём объект Dog
Cat c = new Cat(); // Создаём объект Cat
v.giveShot(d); //Теперь метод giveShot(который выполняет другой метод
(makeNoise())) может выполнятся у любого животного, которое наследуется от класса
Animal
v.giveShot(c);
}
}
*/
Если при создании класса не указать слово public, то он будет наследоваться только
внутри одного пакета(классы из других пакетов не могут наследовать или даже
использовать непубличные классы)
Если пометить класс как final, то его нельзя будет наследовать(а значит, что ни
один из методов не будет переопределён)
/*
public class Appliance {
public boolean turnOn() {
// Код
}
При перегрузке метода, если поменять тип возвращаемого значения, нужно поменять и
набор аргументов
Если поменять только набор аргументов, то тип возвращаемого значения можно оставить
Нельзя создать объект абстрактного класса, но можно создать переменную типа этого
класса, чтобы ей можно было присвоить ссылку на любой объект дочернего класса,
который расширяет этот абстракный класс