JavaRush /Blog Java /Random-PL /Przerwa kawowa #107. Metoda konstruktora w Javie I Przeci...

Przerwa kawowa #107. Metoda konstruktora w Javie I Przeciążenie konstruktora. Abstrakcyjne klasy i interfejsy Java

Opublikowano w grupie Random-PL

Metoda konstruktora w Javie I Przeciążenie konstruktora

Źródło: Objectientprogramming77 Co to jest konstruktor ? Jest to specjalny typ metody, którego nazwa jest taka sama jak nazwa klasy, która określa sposób inicjowania obiektu podczas jego tworzenia. Przerwa kawowa #107.  Metoda konstruktora w Javie I Przeciążenie konstruktora.  Abstrakcyjne klasy i interfejsy Java - 1Podobnie jak inne metody, możemy również zdefiniować metodę Konstruktora w naszym programie Java, ale w przeciwieństwie do innych metod nie możemy bezpośrednio wywołać Konstruktora ; Java wywołuje konstruktor automatycznie po utworzeniu obiektu. Kiedy używamy słowa kluczowego new do utworzenia obiektu klasy, Java robi trzy rzeczy:
  • Przydziela pamięć dla obiektu.
  • Zainicjuj tę zmienną instancji obiektu jej wartością początkową lub domyślną.
  • Wywołuje konstruktora metody klasy.
Jeśli klasa nie definiuje żadnej metody Konstruktora , nadal utworzymy obiekt tej klasy, ale musimy ustawić zmienną instancji lub wywołać inne metody, które następnie muszą zainicjować obiekt tym obiektem. Definiując metodę Konstruktora we własnych klasach, możemy ustawić początkowe wartości zmiennej instancji, wywołać metodę w oparciu o tę zmienną, lub wywołać metody na innych obiektach, czy też obliczyć początkowe właściwości naszego obiektu. Możemy również przeciążać Constructora jak zwykłe metody, aby utworzyć obiekt o określonych właściwościach w oparciu o argument przekazywany do new .

Podstawowy konstruktor

Z definicji Constructor wygląda jak zwykła metoda z dwiema głównymi różnicami.
  • Konstruktor i nazwa klasy są zawsze takie same.
  • Nie ma typu powrotu
Na przykład poniższa tabela przedstawia prostą klasę Person z konstruktorem, który inicjuje zmienną instancji w oparciu o nowy argument . Klasa zawiera również metodę, za pomocą której obiekt może się przedstawić, oraz metodę main() do testowania każdej z tych klas.
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();
Otrzymujemy dane wyjściowe:
Cześć, jestem Ajab. Mam 20 lat. Cześć, jestem Rizwan. Mam 30 lat

Przeciążenie konstruktora

Podobnie jak inne metody, Constructor może również akceptować różne liczby i typy parametrów, umożliwiając tworzenie obiektów o określonych właściwościach lub umożliwiając Constructorowi obliczanie właściwości na podstawie różnych typów danych wejściowych. Na przykład klasa MyRectone w danej tabeli tworzy konstruktor MyRectone i przekazuje inny parametr zamiast tworzyć różne metody dla podanych argumentów.
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();
Wniosek:
Wywołanie MyRectone o współrzędnych 35,35 70,70: MyRectone: <35,35,70,70> Wywołanie buildRect z 1 punktami (15,15), (30,30): MyRectone: <15,15,30,30 > Wywołanie buildRect z 1 punktem (10,10), szerokością (50) i wysokością (50): MyRectone:<10,10,50,50>

Wywołanie innego konstruktora

Konstruktor może być nadzbiorem innego konstruktora zdefiniowanego w Twojej klasie; to znaczy, że mogą zachowywać się tak samo, a nawet trochę więcej. Zamiast powielać identyczne zachowanie w wielu metodach konstruktorów w naszej klasie, rozsądniej jest móc po prostu wywołać pierwszy konstruktor z treści drugiego konstruktora. Java zapewnia do tego specjalną składnię. Aby wywołać konstruktor zdefiniowany w bieżącej klasie, użyj poniższego formularza:
this (arg1, arg2, arg3… ..);
Argumenty przemawiające za tym są oczywiście argumentami konstruktora.

Abstrakcyjne klasy i interfejsy Java

Źródło: Dev.to Klasa abstrakcyjna to klasa, która ma pewne metody bez pełnej definicji i ma modyfikator abstrakcyjny . Przerwa kawowa #107.  Metoda konstruktora w Javie I Przeciążenie konstruktora.  Abstrakcyjne klasy i interfejsy Java - 2
  • Nie można utworzyć obiektu przy użyciu konstruktora klasy abstrakcyjnej.
  • Możesz użyć klasy abstrakcyjnej jako klasy bazowej do zdefiniowania klasy pochodnej.
  • Klasa abstrakcyjna ma co najmniej jedną metodę abstrakcyjną.
  • Metoda abstrakcyjna : ma nagłówek jak zwykła metoda, ale bez treści i wymaga modyfikatora abstrakcyjnego oraz średnika.
  • Metoda abstrakcyjna nie może być prywatna.
  • Klasa abstrakcyjna może być typem.
Przykład:
public abstract class Example{
  private String data1;
  private double data2;

public abstract double getPay();
}
Interfejs : definiuje zestaw metod, które musi posiadać każda klasa implementująca ten interfejs.
  • Interfejs jest typem.
  • Zawiera nagłówki metod bez definicji i zmiennych instancji:
public interface Interface1{
public void method1();
public int method2();
}
Aby zaimplementować interfejs, klasa musi wykonać dwie rzeczy:
  • Uwzględnij implementacje nazwa_interfejsu .
  • Klasa musi implementować wszystkie nagłówki metod wymienione w interfejsie.
public class Implementer implements Interface1 {

    @Override
    public void method1() {
    //definition
    }

    @Override
    public int method2() {
    //definition
    }

}
  • Nagłówki metod są deklarowane jako publiczne .
  • Klasa abstrakcyjna może również implementować interfejs. Klasa ta udostępnia definicje niektórych nagłówków metod w interfejsie.
  • Interfejsy Java mogą również zawierać stałą , na przykład:
public interface Constant {

    public static final int JANUARY = 1, FEBRUARY = 2, MARCH = 3;
}
  • Każda klasa implementująca interfejs Constant będzie automatycznie mieć te stałe, na przykład:
public class Constants implements Constant {

    public static void main(String[] args) {
        System.out.println(JANUARY);
    }

}
  • Można mieszać interfejsy, włączając stałe i nagłówki metod w jeden interfejs.
  • Java nie obsługuje dziedziczenia wielokrotnego, więc klasa może rozszerzać tylko jedną klasę bazową. Jednak korzystając z interfejsów, klasa może implementować wiele interfejsów:
public class Implementer implements Interface1, Interface2, .. InterfaceN{

}
  • Powodem, dla którego klasa Java może rozszerzać tylko jedną klasę bazową, jest to, że jeśli Java dopuszcza dwie klasy bazowe, obie klasy mogą mieć ten sam nagłówek metody z inną definicją, co powoduje niespójność.
  • Dwa interfejsy mogą być niekompatybilne, jeśli zdefiniujesz dwie stałe o tej samej nazwie i różnych wartościach:
public interface Interface1{
public static final int ANSWEAR = 0;
}
public interface Interface1{
public static final int ANSWEAR = 3;
}
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION