Метод Constructor Java I Перевантаження Constructor
Джерело: Objectorientedprogramming77 Що таке Constructor ? Це особливий тип методу, ім'я якого збігається з ім'ям класу, який визначає, як ініціалізується об'єкт при його створенні. Як і інші методи, ми можемо визначити метод Constructor у нашій Java-программе, але, на відміну інших методів, ми можемо викликати Constructor безпосередньо; Java викликає конструктор автоматично під час створення об'єкта. Коли ми використовуємо ключове слово new для створення об'єкта класу, Java робить три речі:- Виділяє пам'ять об'єкта.
- Ініціалізуйте цю змінну екземпляра об'єкта з початковим значенням або значенням за замовчуванням.
- Викликає конструктор Method класу.
Базовий Constructor
За визначенням Constructor виглядає як звичайний метод із двома основними відмінностями.- Конструктор та ім'я класу завжди однакові.
- У нього немає типу, що повертається
class Person
{
String name;
int age;
Person (String n, int a)
{
name = n;
age = a;
}
void printPerson ()
{
System.out.print("Hi, I am " +name);
System.out.println(" I am "+ age + " years old.");
}
public static void main(String args[])
{
Person p;
p = new Person ("Ajab", 20);
p.printPerson();
p = new Person ("Rizwan", 30);
p.printPerson();
Отримуємо висновок:
Hi, I am Ajab. I am 20 years old. Hi, I am Rizwan. I am 30 years old
Перевантаження Constructor
Як і інші методи, Constructor також може приймати різну кількість та типи параметрів, що дозволяє створювати об'єкти із заданими властивостями або щоб Constructor міг обчислювати властивості на основі різних типів введення. Наприклад, клас MyRectone у цій таблиці створює конструктор MyRectone і передає інший параметр замість створення різних методів даних аргументів.class MyRectone
{
int x1 = 0;
int y1 = 0;
int x2 = 0;
int y2 = 0;
MyRectone ( int x1, int x2, int x2, int y2)
{
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
}
MyRectone (Point topLeft, Point bottomRight)
{
x1 = topLeft.x;
y1 = topLeft.y;
x2 = bottomRight.x;
y2 = bottomRight.y;
}
MyRectone ( Point topLeft, int w, int h)
{
x1 = topLeft.x;
y1 = top left.y;
x2 = ( x1 + w);
y2 = (y1 + h);
}
void printRect ()
{
System.out.print ("MyRectone: <" + x1 + ", " + y1);
system.out.println (", " + x2 + " ,"+ y2 + ">");
}
public static void main (String args [] )
{
MyRectone rect;
System.out.println ("Calling MyRectone with coordinates 35,35 70,70");
rect = new MyRectone (35,35,70,70);
rect.printRect();
System.out.println ("Calling MyRectone with coordinates (15,15) (30,30)");
rect = new MyRectone (15,15,30,30);
rect.printRect();
System.out.print (" Calling buildRect w/1 point (10,10),");
System.out.println ("width (50) and height (50)");
rect = new MyRectone ( new Point (10,10), 50, 50);
rect.printRect();
Висновок:
Calling MyRectone with coordinates 35,35 70,70: MyRectone: <35,35,70,70> Calling buildRect w/1 points (15,15), (30,30): MyRectone: <15,15,30,30 > Calling buildRect w/1 point (10,10), width (50) and height (50): MyRectone:<10,10,50,50>
Виклик іншого Constructor
Якийсь конструктор може бути надмножиною іншого конструктора, визначеного у вашому класі; тобто, вони можуть поводитися так само плюс трохи більше. Замість того, щоб дублювати ідентичну поведінку в кількох методах конструктора у нашому класі, має сенс мати можливість просто викликати цей перший конструктор із тіла другого конструктора. Java надає для цього спеціальний синтаксис. Щоб викликати конструктор, визначений у поточному класі, використовуйте цю форму:this (arg1, arg2, arg3… ..);
Аргументами цього , звичайно ж, є аргументи конструктора.
Абстрактні класи та інтерфейси Java
Джерело: Dev.to Абстрактний клас – це клас, який має деякі методи без повного визначення та має модифікатор abstract .- Ви не можете створити об'єкт за допомогою конструктора абстрактного класу.
- Ви можете використовувати абстрактний клас як базовий для визначення похідного класу.
- В абстрактному класі існує, принаймні, один абстрактний метод.
- Абстрактний метод має заголовок, як і звичайний метод, але без тіла, і для нього потрібен модифікатор abstract і точка з комою.
- Абстрактний метод може бути приватним.
- Анотація клас може бути типом.
public abstract class Example{
private String data1;
private double data2;
public abstract double getPay();
}
Інтерфейс : визначає набір методів, які повинен мати будь-який клас, що реалізує цей інтерфейс.
- Інтерфейс – це тип.
- Він містить заголовки методів без визначення та без змінних екземпляра:
public interface Interface1{
public void method1();
public int method2();
}
Щоб реалізувати інтерфейс, клас має виконувати дві речі:
- Включати implements InterfaceName .
- Клас повинен реалізовувати всі заголовки методів, перелічені в інтерфейсі.
public class Implementer implements Interface1 {
@Override
public void method1() {
//definition
}
@Override
public int method2() {
//definition
}
}
- Заголовки методів оголошені public .
- Абстрактний клас також може реалізовувати інтерфейс, цей клас дає визначення деяких заголовків методів в інтерфейсі.
- Інтерфейси Java також можуть містити constant , наприклад:
public interface Constant {
public static final int JANUARY = 1, FEBRUARY = 2, MARCH = 3;
}
- Будь-який клас, що реалізує інтерфейс Constant , буде автоматично мати ці константи, наприклад:
public class Constants implements Constant {
public static void main(String[] args) {
System.out.println(JANUARY);
}
}
- Ви можете змішувати використання інтерфейсів, включаючи константи та заголовки методів в один інтерфейс.
- У Java не підтримується множинне спадкування, тому клас може розширювати лише один базовий клас. Проте, використовуючи інтерфейси, клас може реалізовувати кілька інтерфейсів:
public class Implementer implements Interface1, Interface2, .. InterfaceN{
}
- Причина, через яку клас Java може розширювати лише один базовий клас, полягає в тому, що якщо Java допускає два базові класи, ці два класи можуть мати один і той же заголовок методу з різним визначенням, що призведе до неузгодженості.
- Два інтерфейси можуть бути несумісними, якщо визначити дві константи з одним і тим же ім'ям та різними значеннями:
public interface Interface1{
public static final int ANSWEAR = 0;
}
public interface Interface1{
public static final int ANSWEAR = 3;
}
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ