Методы класса
Методы — это функции, которые определяют поведение объекта. Методы могут изменять состояние объекта (то есть поля) или выполнять какие-либо действия. Методы объявляются внутри класса и имеют следующие компоненты:
Возвращаемый тип: Тип данных, который метод возвращает. Если метод ничего не возвращает, используется void.
Имя метода: Идентификатор, используемый для вызова метода.
Параметры: Список параметров, передаваемых методу (если есть).
Тело метода: Код, который выполняет метод.
Объявление методов
Пример метода, который принимает параметры и возвращает значение:
Использование методов:
Методы доступа (геттеры и сеттеры)
Геттеры и сеттеры используются для доступа к приватным полям класса. Геттер возвращает значение поля, а сеттер устанавливает значение поля.
Пример:
Использование геттеров и сеттеров:
Перегрузка методов
Перегрузка методов позволяет объявлять несколько методов с одним и тем же именем, но с разными параметрами.
Пример перегрузки методов:
Использование перегруженных методов:
Методы с переменным числом параметров (Varargs)
В Java можно создать метод, который принимает переменное количество параметров, используя ... (три точки) после типа параметра.
Пример метода с переменным числом параметров:
Методы — это функции, которые определяют поведение объекта. Методы могут изменять состояние объекта (то есть поля) или выполнять какие-либо действия. Методы объявляются внутри класса и имеют следующие компоненты:
Возвращаемый тип: Тип данных, который метод возвращает. Если метод ничего не возвращает, используется void.
Имя метода: Идентификатор, используемый для вызова метода.
Параметры: Список параметров, передаваемых методу (если есть).
Тело метода: Код, который выполняет метод.
Объявление методов
Пример метода, который принимает параметры и возвращает значение:
public class Calculator {
// Метод для сложения двух чисел
public int add(int a, int b) {
return a + b;
}
// Метод для вычитания двух чисел
public int subtract(int a, int b) {
return a - b;
}
}
Использование методов:
public class Main {
public static void main(String[] args) {
Calculator calc = new Calculator();
int sum = calc.add(5, 3);
int difference = calc.subtract(5, 3);
System.out.println("Sum: " + sum); // Выведет "Sum: 8"
System.out.println("Difference: " + difference); // Выведет "Difference: 2"
}
}
Методы доступа (геттеры и сеттеры)
Геттеры и сеттеры используются для доступа к приватным полям класса. Геттер возвращает значение поля, а сеттер устанавливает значение поля.
Пример:
public class Person {
private String name;
private int age;
// Конструктор
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Геттер для поля name
public String getName() {
return name;
}
// Сеттер для поля name
private void setName(String name) {
this.name = name;
}
// Геттер для поля age
public int getAge() {
return age;
}
// Сеттер для поля age
private void setAge(int age) {
this.age = age;
}
}
Использование геттеров и сеттеров:
public class Main {
public static void main(String[] args) {
Person person = new Person("Alice", 30);
System.out.println("Name: " + person.getName()); // Выведет "Name: Alice"
System.out.println("Age: " + person.getAge()); // Выведет "Age: 30"
person.setName("Bob");
person.setAge(35);
System.out.println("Updated Name: " + person.getName()); // Выведет "Updated Name: Bob"
System.out.println("Updated Age: " + person.getAge()); // Выведет "Updated Age: 35"
}
}
Перегрузка методов
Перегрузка методов позволяет объявлять несколько методов с одним и тем же именем, но с разными параметрами.
Пример перегрузки методов:
public class MathOperations {
// Метод для сложения двух целых чисел
public int add(int a, int b) {
return a + b;
}
// Метод для сложения трех целых чисел
public int add(int a, int b, int c) {
return a + b + c;
}
// Метод для сложения двух дробных чисел
public double add(double a, double b) {
return a + b;
}
}
Использование перегруженных методов:
public class Main {
public static void main(String[] args) {
MathOperations mathOps = new MathOperations();
System.out.println(mathOps.add(1, 2)); // Выведет "3"
System.out.println(mathOps.add(1, 2, 3)); // Выведет "6"
System.out.println(mathOps.add(1.5, 2.5)); // Выведет "4.0"
}
}
Методы с переменным числом параметров (Varargs)
В Java можно создать метод, который принимает переменное количество параметров, используя ... (три точки) после типа параметра.
Пример метода с переменным числом параметров:
public class VarargsExample {
// Метод для суммирования переменного числа целых чисел
public int sum(int... numbers) {
int total = 0;
for (int number : numbers) {
total += number;
}
return total;
}
}
Использование метода с переменным числом параметров:
Статические методы
Статические методы принадлежат классу, а не экземпляру класса, и могут быть вызваны без создания объекта.
Пример статического метода:
Использование статического метода:
#Java #Training
public class Main {
public static void main(String[] args) {
VarargsExample example = new VarargsExample();
System.out.println(example.sum(1, 2, 3)); // Выведет "6"
System.out.println(example.sum(1, 2, 3, 4, 5)); // Выведет "15"
}
}
Статические методы
Статические методы принадлежат классу, а не экземпляру класса, и могут быть вызваны без создания объекта.
Пример статического метода:
public class MathUtils {
// Статический метод для вычисления квадрата числа
public static int square(int number) {
return number * number;
}
}
Использование статического метода:
public class Main {
public static void main(String[] args) {
int result = MathUtils.square(5);
System.out.println("Square: " + result); // Выведет "Square: 25"
}
}
#Java #Training
Какой у Вас грейд?
Опрос проводится анонимно с целью понимания какой контент выкладывать на канале!
Не стесняйтесь отвечать)
Опрос проводится анонимно с целью понимания какой контент выкладывать на канале!
Не стесняйтесь отвечать)
Anonymous Poll
0%
Я тимлид и выше
0%
Senior
0%
Midle
10%
Junior
90%
Я новичок и только учусь
Ребят, обучающий контент я буду выкладывать по 1-2 посту в день.
О желаемых темах можете написать в комментариях. Там же готов обсудить все вопросы. Найти обучалки можно по хештегу #Training.
Задачки публикуются также ежедневно под хештегом #Tasks - решайте и повышайте свой уровень!
Чат у нас доступен по ссылке - https://t.me/Java_Beginner_chat, заходите будем общаться))
В остальном я ориентироваться буду на вашу активность)
Пишите не стесняйтесь!)
О желаемых темах можете написать в комментариях. Там же готов обсудить все вопросы. Найти обучалки можно по хештегу #Training.
Задачки публикуются также ежедневно под хештегом #Tasks - решайте и повышайте свой уровень!
Чат у нас доступен по ссылке - https://t.me/Java_Beginner_chat, заходите будем общаться))
В остальном я ориентироваться буду на вашу активность)
Пишите не стесняйтесь!)
Конструкторы
Конструкторы — это специальные методы, которые вызываются при создании объекта. Они инициализируют объект и могут принимать параметры для задания начальных значений полей. Конструкторы имеют то же имя, что и класс, и не возвращают значений (даже void не указывается).
Конструктор по умолчанию
Если вы не создаете конструктор в классе, Java автоматически создает конструктор по умолчанию, который не принимает параметров и не выполняет никаких действий. Пример:
Использование конструктора по умолчанию:
Явное определение конструктора
Для задания значений полей при создании объекта можно явно определить конструктор:
Использование явного конструктора:
Перегрузка конструкторов
Конструкторы могут быть перегружены, то есть можно создать несколько конструкторов с разными параметрами. Это позволяет создавать объекты разными способами.
Пример перегрузки конструкторов:
Использование перегруженных конструкторов:
Инициализация полей с помощью конструктора
Конструкторы часто используются для инициализации полей объекта.
Пример:
Использование конструктора:
Вызов другого конструктора из конструктора
В Java можно вызвать один конструктор из другого с помощью ключевого слова this.
Пример:
Использование:
#Java #Training
Конструкторы — это специальные методы, которые вызываются при создании объекта. Они инициализируют объект и могут принимать параметры для задания начальных значений полей. Конструкторы имеют то же имя, что и класс, и не возвращают значений (даже void не указывается).
Конструктор по умолчанию
Если вы не создаете конструктор в классе, Java автоматически создает конструктор по умолчанию, который не принимает параметров и не выполняет никаких действий. Пример:
public class Person {
String name;
int age;
// Конструктор по умолчанию создается автоматически
}
Использование конструктора по умолчанию:
public class Main {
public static void main(String[] args) {
Person person = new Person(); // Вызов конструктора по умолчанию
}
}
Явное определение конструктора
Для задания значений полей при создании объекта можно явно определить конструктор:
public class Person {
String name;
int age;
// Явный конструктор
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
Использование явного конструктора:
public class Main {
public static void main(String[] args) {
Person person = new Person("John", 30); // Вызов конструктора с параметрами
}
}
Перегрузка конструкторов
Конструкторы могут быть перегружены, то есть можно создать несколько конструкторов с разными параметрами. Это позволяет создавать объекты разными способами.
Пример перегрузки конструкторов:
public class Person {
String name;
int age;
// Конструктор без параметров
public Person() {
this.name = "Unknown";
this.age = 0;
}
// Конструктор с параметрами
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
Использование перегруженных конструкторов:
public class Main {
public static void main(String[] args) {
Person person1 = new Person(); // Вызов конструктора без параметров
Person person2 = new Person("Alice", 25); // Вызов конструктора с параметрами
System.out.println("Person 1: " + person1.name + ", " + person1.age);
System.out.println("Person 2: " + person2.name + ", " + person2.age);
}
}
Инициализация полей с помощью конструктора
Конструкторы часто используются для инициализации полей объекта.
Пример:
public class Car {
String make;
String model;
int year;
// Конструктор с параметрами
public Car(String make, String model, int year) {
this.make = make;
this.model = model;
this.year = year;
}
}
Использование конструктора:
public class Main {
public static void main(String[] args) {
Car car = new Car("Toyota", "Corolla", 2020);
System.out.println("Make: " + car.make + ", Model: " + car.model + ", Year: " + car.year);
}
}
Вызов другого конструктора из конструктора
В Java можно вызвать один конструктор из другого с помощью ключевого слова this.
Пример:
public class Person {
String name;
int age;
// Конструктор без параметров
public Person() {
this("Unknown", 0); // Вызов конструктора с параметрами
}
// Конструктор с параметрами
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
Использование:
public class Main {
public static void main(String[] args) {
Person person = new Person(); // Вызов конструктора без параметров, который вызывает другой конструктор
System.out.println("Name: " + person.name + ", Age: " + person.age);
}
}
#Java #Training
Если завтра-послезавтра (время будет анонсировано позже) будет онлайн встреча по созданию мини проекта, Вы желаете принять участие?
Anonymous Poll
57%
Да, конечно!
39%
Мне интересно, но я не смогу по ряду причин
4%
Ерундой страдаете)
Forwarded from English Beginners
Subscribe to us and you won’t have to remain silent in the presence of English speakers!
https://t.me/english_for_begginers
#Mems
https://t.me/english_for_begginers
#Mems
Подписывайтесь на канал, мы умеем выводить в консоль "Hello World"!
https://t.me/Java_for_beginner_dev
#Mems
https://t.me/Java_for_beginner_dev
#Mems
Какой вариант ответа из задачи выше?
Anonymous Quiz
7%
Circle\nSquare
87%
Drawing Circle\nDrawing Square
7%
Circle\nDrawing Square
0%
Drawing Circle\nSquare
Подумайте, что выведет программа в консоль.
#Tasks
abstract class Shape {
abstract void draw();
}
class Circle extends Shape {
@Override
void draw() {
System.out.println("Drawing Circle");
}
}
class Square extends Shape {
@Override
void draw() {
System.out.println("Drawing Square");
}
}
public class Main {
public static void main(String[] args) {
Shape shape1 = new Circle();
Shape shape2 = new Square();
shape1.draw();
shape2.draw();
}
}
#Tasks
Статические и блоки инициализации
Статические блоки инициализации используются для инициализации статических полей класса. Они выполняются один раз при загрузке класса.
Пример:
При запуске программы выведется:
Блоки инициализации
Блоки инициализации используются для инициализации полей объекта и выполняются при каждом создании объекта, перед вызовом конструктора.
Пример:
При запуске программы выведется:
Использование статических блоков инициализации
Статические блоки инициализации полезны, когда нужно выполнить сложную логику инициализации статических полей.
Пример:
Инициализация статических полей
Статические поля можно инициализировать непосредственно при их объявлении или в статическом блоке инициализации.
Пример:
Инициализация полей в блоках инициализации
Блоки инициализации позволяют выполнять инициализацию, которая не может быть выполнена в объявлении полей.
Пример:
Разница между статическими и нестатическими блоками инициализации
- статические блоки инициализации выполняются один раз при загрузке класса и используются для инициализации статических полей.
- нестатические блоки инициализации выполняются при каждом создании объекта и используются для инициализации нестатических полей.
#Java #Training
Статические блоки инициализации используются для инициализации статических полей класса. Они выполняются один раз при загрузке класса.
Пример:
public class StaticExample {
static int staticValue;
// Статический блок инициализации
static {
staticValue = 10;
System.out.println("Static block executed");
}
public static void main(String[] args) {
System.out.println("Static value: " + staticValue);
}
}
При запуске программы выведется:
Static block executed
Static value: 10
Блоки инициализации
Блоки инициализации используются для инициализации полей объекта и выполняются при каждом создании объекта, перед вызовом конструктора.
Пример:
public class InitializationExample {
int value;
// Блок инициализации
{
value = 5;
System.out.println("Initialization block executed");
}
public InitializationExample() {
System.out.println("Constructor executed");
}
public static void main(String[] args) {
InitializationExample example = new InitializationExample();
System.out.println("Value: " + example.value);
}
}
При запуске программы выведется:
Initialization block executed
Constructor executed
Value: 5
Использование статических блоков инициализации
Статические блоки инициализации полезны, когда нужно выполнить сложную логику инициализации статических полей.
Пример:
public class Configuration {
static String config;
static {
// Имитация загрузки конфигурации
config = loadConfig();
}
private static String loadConfig() {
// Сложная логика загрузки конфигурации
return "Loaded configuration";
}
public static void main(String[] args) {
System.out.println("Configuration: " + config);
}
}
Инициализация статических полей
Статические поля можно инициализировать непосредственно при их объявлении или в статическом блоке инициализации.
Пример:
public class StaticInitialization {
static int staticValue = 10;
static {
staticValue = 20;
}
public static void main(String[] args) {
System.out.println("Static value: " + staticValue); // Выведет "Static value: 20"
}
}
Инициализация полей в блоках инициализации
Блоки инициализации позволяют выполнять инициализацию, которая не может быть выполнена в объявлении полей.
Пример:
public class InitializationBlockExample {
int value;
{
value = calculateInitialValue();
}
private int calculateInitialValue() {
// Сложная логика расчета начального значения
return 42;
}
public static void main(String[] args) {
InitializationBlockExample example = new InitializationBlockExample();
System.out.println("Value: " + example.value); // Выведет "Value: 42"
}
}
Разница между статическими и нестатическими блоками инициализации
- статические блоки инициализации выполняются один раз при загрузке класса и используются для инициализации статических полей.
- нестатические блоки инициализации выполняются при каждом создании объекта и используются для инициализации нестатических полей.
#Java #Training
Доброе утро подписчики!
Вот Вам небольшое задание:
Написать метод который принимает в качестве параметра шанс (неважно чего, от 1 до 100) и в зависимости от переданного, рандомно выводит true/false.
уточнение - шанс просто int
Ну и соответственно чем выше шанс тем чаще выпадает true, кто не понял)
Жду ваши варианты в комментах!)
https://t.me/Java_for_beginner_dev
#Tasks
Вот Вам небольшое задание:
Написать метод который принимает в качестве параметра шанс (неважно чего, от 1 до 100) и в зависимости от переданного, рандомно выводит true/false.
Жду ваши варианты в комментах!)
https://t.me/Java_for_beginner_dev
#Tasks
Дорогие участники канала!
Сегодня в 14 часов по МСК, мы хотим собраться в Яндекс.Телемост для знакомства и общения))
Кроме этого @MrAbhorrent проведет мини курс по созданию игры крестики-нолики!
Писать будем на Java без сторонних библиотек, что подойдет для любого новичка. После создания мы расскажем Вам как сохранить написанное в Git Hub, для портфолио (кому это нужно).
Ссылку ждите в нашем чате - https://t.me/Java_Beginner_chat
Ждем всех! Зовите и тех кого у нас еще нет на канале!)
Встреча пройдет в пробном формате, могут быть накладки. В целом если такой формат вам зайдет сделаем это регулярным!)
Сегодня в 14 часов по МСК, мы хотим собраться в Яндекс.Телемост для знакомства и общения))
Кроме этого @MrAbhorrent проведет мини курс по созданию игры крестики-нолики!
Писать будем на Java без сторонних библиотек, что подойдет для любого новичка. После создания мы расскажем Вам как сохранить написанное в Git Hub, для портфолио (кому это нужно).
Ссылку ждите в нашем чате - https://t.me/Java_Beginner_chat
Ждем всех! Зовите и тех кого у нас еще нет на канале!)
Надеюсь Вы готовы! Мы уже собираемся!
@MrAbhorrent уже разминает пальцы)))
https://t.me/Java_Beginner_chat - наш чат и именно там будет опубликована ссылка на Яндекс.Телемост)))
Повторюсь - ждем всех!!!
@MrAbhorrent уже разминает пальцы)))
https://t.me/Java_Beginner_chat - наш чат и именно там будет опубликована ссылка на Яндекс.Телемост)))
Повторюсь - ждем всех!!!
Крестики_Нолики_от_Андеря_серия_1.webm
299.6 MB
Спасибо за участие тем, кто был на встрече!
Было приятно познакомиться!)
Если что-то в процессе осталось непонятным, Вы всегда можете написать либо в комментариях под данным постом, либо в чате!)
Отдельная благодарность @MrAbhorrent, что взял на себя этот труд по лайфодингу!))
Код - https://github.com/MrAbhorrent/TicTacToe_study
Было приятно познакомиться!)
К данному посту прикладываю видеозапись первой части кода игры @MrAbhorrent.
Если что-то в процессе осталось непонятным, Вы всегда можете написать либо в комментариях под данным постом, либо в чате!)
Отдельная благодарность @MrAbhorrent, что взял на себя этот труд по лайфодингу!))
Код - https://github.com/MrAbhorrent/TicTacToe_study
Forwarded from English Beginners
Инкапсуляция и модификаторы доступа
Инкапсуляция — один из основных принципов объектно-ориентированного программирования (ООП). Он заключается в сокрытии внутреннего состояния объекта и предоставлении доступа к нему только через методы. Это позволяет защитить данные от некорректного использования и изменения.
В Java инкапсуляция достигается с помощью:
Модификаторов доступа (access modifiers), таких как private, protected, и public.
Методов доступа (getter) и методов изменения (setter).(Рассматривали ранее)
Модификаторы доступа
private: Поле или метод доступен только внутри класса.
default (без модификатора): Поле или метод доступен внутри пакета.
protected: Поле или метод доступен внутри пакета и в подклассах.
public: Поле или метод доступен из любого места.
Пример инкапсуляции
Рассмотрим класс BankAccount, который демонстрирует инкапсуляцию.
Использование инкапсуляции:
Преимущества инкапсуляции
Контроль доступа: Инкапсуляция ограничивает доступ к полям класса и позволяет контролировать их изменение.
Поддержка инвариантов: С помощью методов можно гарантировать, что объект всегда находится в корректном состоянии.
Сокрытие реализации: Внутренняя реализация класса скрыта от внешнего мира, что позволяет изменять её без воздействия на другие части программы.
#Java #Training #ООП #Инкапсуляция
Инкапсуляция — один из основных принципов объектно-ориентированного программирования (ООП). Он заключается в сокрытии внутреннего состояния объекта и предоставлении доступа к нему только через методы. Это позволяет защитить данные от некорректного использования и изменения.
В Java инкапсуляция достигается с помощью:
Модификаторов доступа (access modifiers), таких как private, protected, и public.
Методов доступа (getter) и методов изменения (setter).
Модификаторы доступа
private: Поле или метод доступен только внутри класса.
default (без модификатора): Поле или метод доступен внутри пакета.
protected: Поле или метод доступен внутри пакета и в подклассах.
public: Поле или метод доступен из любого места.
Пример инкапсуляции
Рассмотрим класс BankAccount, который демонстрирует инкапсуляцию.
public class BankAccount {
private String accountNumber; // Поле доступно только внутри класса
private double balance;
// Конструктор для инициализации полей
public BankAccount(String accountNumber, double balance) {
this.accountNumber = accountNumber;
this.balance = balance;
}
// Getter для accountNumber
public String getAccountNumber() {
return accountNumber;
}
// Getter для balance
public double getBalance() {
return balance;
}
// Setter для balance с проверкой на отрицательное значение
public void setBalance(double balance) {
if (balance >= 0) {
this.balance = balance;
} else {
System.out.println("Balance cannot be negative.");
}
}
// Метод для депозита средств на счет
public void deposit(double amount) {
if (amount > 0) {
balance += amount;
} else {
System.out.println("Deposit amount must be positive.");
}
}
// Метод для снятия средств со счета
public void withdraw(double amount) {
if (amount > 0 && amount <= balance) {
balance -= amount;
} else {
System.out.println("Invalid withdrawal amount.");
}
}
}
Использование инкапсуляции:
public class Main {
public static void main(String[] args) {
BankAccount account = new BankAccount("12345678", 1000.0);
// Доступ к полям осуществляется через методы
System.out.println("Account Number: " + account.getAccountNumber());
System.out.println("Balance: " + account.getBalance());
account.deposit(500.0);
System.out.println("Balance after deposit: " + account.getBalance());
account.withdraw(200.0);
System.out.println("Balance after withdrawal: " + account.getBalance());
}
}
Преимущества инкапсуляции
Контроль доступа: Инкапсуляция ограничивает доступ к полям класса и позволяет контролировать их изменение.
Поддержка инвариантов: С помощью методов можно гарантировать, что объект всегда находится в корректном состоянии.
Сокрытие реализации: Внутренняя реализация класса скрыта от внешнего мира, что позволяет изменять её без воздействия на другие части программы.
#Java #Training #ООП #Инкапсуляция
Forwarded from English Beginners