JavaRush /Blog Java /Random-VI /Nghỉ giải lao #107. Phương thức xây dựng trong Java I Quá...

Nghỉ giải lao #107. Phương thức xây dựng trong Java I Quá tải trình xây dựng. Các lớp và giao diện Java trừu tượng

Xuất bản trong nhóm

Phương thức xây dựng trong Java I Quá tải trình xây dựng

Nguồn: Lập trình hướng đối tượng77 Trình xây dựng là gì ? Đây là một loại phương thức đặc biệt có tên trùng với tên của lớp, xác định cách khởi tạo đối tượng khi nó được tạo. Nghỉ giải lao #107.  Phương thức xây dựng trong Java I Quá tải trình xây dựng.  Các lớp và giao diện Java trừu tượng - 1Giống như các phương thức khác, chúng ta cũng có thể định nghĩa một phương thức Constructor trong chương trình Java của mình, nhưng không giống như các phương thức khác, chúng ta không thể gọi trực tiếp Constructor ; Java tự động gọi hàm tạo khi một đối tượng được tạo. Khi chúng ta sử dụng từ khóa new để tạo một đối tượng của một lớp, Java sẽ thực hiện ba việc:
  • Cấp phát bộ nhớ cho một đối tượng.
  • Khởi tạo biến thể hiện đối tượng này với giá trị ban đầu hoặc giá trị mặc định của chúng.
  • Gọi hàm tạo Phương thức của lớp.
Nếu một lớp không định nghĩa bất kỳ phương thức Constructor nào, chúng ta vẫn sẽ tạo một đối tượng của lớp đó, nhưng chúng ta phải đặt một biến thể hiện hoặc gọi các phương thức khác, sau đó các phương thức này phải khởi tạo đối tượng bằng đối tượng đó. Bằng cách xác định một phương thức Constructor trong các lớp của riêng mình, chúng ta có thể đặt các giá trị ban đầu của một biến thể hiện, gọi một phương thức dựa trên biến đó hoặc gọi các phương thức trên các đối tượng khác hoặc tính toán các thuộc tính ban đầu của đối tượng của chúng ta. Chúng ta cũng có thể nạp chồng Trình xây dựng giống như các phương thức thông thường để tạo một đối tượng có các thuộc tính nhất định dựa trên đối số mà chúng ta chuyển đến new .

Trình xây dựng cơ bản

Theo định nghĩa, Constructor trông giống như một phương thức thông thường với hai điểm khác biệt chính.
  • Tên hàm tạo và tên lớp luôn giống nhau.
  • Nó không có kiểu trả về
Ví dụ: bảng bên dưới hiển thị một lớp Person đơn giản với hàm tạo khởi tạo biến thể hiện của nó dựa trên đối số mới . Lớp này cũng bao gồm một phương thức mà một đối tượng có thể tự giới thiệu và một phương thức main() để kiểm tra từng lớp này.
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();
Chúng tôi nhận được đầu ra:
Xin chào, tôi là Ajab. Tôi 20 tuổi. Xin chào, tôi là Rizwan. tôi 30 tuổi

Quá tải hàm tạo

Giống như các phương thức khác, Constructor cũng có thể chấp nhận số lượng và loại tham số khác nhau, cho phép tạo đối tượng với các thuộc tính được chỉ định hoặc cho phép Constructor tính toán các thuộc tính dựa trên các loại đầu vào khác nhau. Ví dụ: lớp MyRectone trong một bảng nhất định sẽ tạo một hàm tạo MyRectone và truyền một tham số khác thay vì tạo các phương thức khác nhau cho các đối số đã cho.
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();
Phần kết luận:
Gọi MyRectone với tọa độ 35,35 70,70: MyRectone: <35,35,70,70> Gọi buildRect w/1 point (15,15), (30,30): MyRectone: <15,15,30,30 > Gọi buildRect w/1 point (10,10), chiều rộng (50) và chiều cao (50): MyRectone:<10,10,50,50>

Gọi một nhà xây dựng khác

Hàm tạo có thể là tập hợp con của hàm tạo khác được xác định trong lớp của bạn; nghĩa là họ có thể cư xử giống nhau và nhiều hơn một chút. Thay vì sao chép hành vi giống hệt nhau trên nhiều phương thức hàm tạo trong lớp của chúng ta, sẽ hợp lý hơn khi có thể gọi hàm tạo đầu tiên đó từ phần nội dung của hàm tạo thứ hai. Java cung cấp một cú pháp đặc biệt cho việc này. Để gọi một hàm tạo được xác định trong lớp hiện tại, hãy sử dụng biểu mẫu sau:
this (arg1, arg2, arg3… ..);
Tất nhiên, các đối số cho điều này là các đối số cho hàm tạo.

Các lớp và giao diện Java trừu tượng

Nguồn: Dev.to Lớp trừu tượng là lớp có một số phương thức không có định nghĩa đầy đủ và có công cụ sửa đổi trừu tượng . Nghỉ giải lao #107.  Phương thức xây dựng trong Java I Quá tải trình xây dựng.  Các lớp và giao diện Java trừu tượng - 2
  • Bạn không thể tạo một đối tượng bằng cách sử dụng hàm tạo của lớp trừu tượng.
  • Bạn có thể sử dụng lớp trừu tượng làm lớp cơ sở để định nghĩa lớp dẫn xuất.
  • Một lớp trừu tượng có ít nhất một phương thức trừu tượng.
  • Phương thức trừu tượng : có tiêu đề giống như một phương thức thông thường, nhưng không có phần thân và yêu cầu công cụ sửa đổi trừu tượng và dấu chấm phẩy.
  • Một phương thức trừu tượng không thể riêng tư.
  • Một lớp trừu tượng có thể là một kiểu.
Ví dụ:
public abstract class Example{
  private String data1;
  private double data2;

public abstract double getPay();
}
Giao diện : Xác định một tập hợp các phương thức mà bất kỳ lớp nào triển khai giao diện này đều phải có.
  • Một giao diện là một loại.
  • Nó chứa các tiêu đề phương thức không có định nghĩa và không có biến thể hiện:
public interface Interface1{
public void method1();
public int method2();
}
Để triển khai một giao diện, một lớp phải thực hiện hai việc:
  • Bao gồm các dụng cụ InterfaceName .
  • Lớp phải triển khai tất cả các tiêu đề phương thức được liệt kê trong giao diện.
public class Implementer implements Interface1 {

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

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

}
  • Tiêu đề phương thức được khai báo công khai .
  • Một lớp trừu tượng cũng có thể triển khai một giao diện, lớp này cung cấp các định nghĩa cho một số tiêu đề phương thức trong giao diện.
  • Các giao diện Java cũng có thể chứa hằng số , ví dụ:
public interface Constant {

    public static final int JANUARY = 1, FEBRUARY = 2, MARCH = 3;
}
  • Bất kỳ lớp nào triển khai giao diện Constant sẽ tự động có các hằng số này, ví dụ:
public class Constants implements Constant {

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

}
  • Bạn có thể kết hợp việc sử dụng các giao diện bằng cách đưa các hằng số và tiêu đề phương thức vào một giao diện duy nhất.
  • Java không hỗ trợ đa kế thừa nên một lớp chỉ có thể mở rộng một lớp cơ sở. Tuy nhiên, bằng cách sử dụng giao diện, một lớp có thể triển khai nhiều giao diện:
public class Implementer implements Interface1, Interface2, .. InterfaceN{

}
  • Lý do tại sao một lớp Java chỉ có thể mở rộng một lớp cơ sở là vì nếu Java cho phép hai lớp cơ sở thì hai lớp có thể có cùng tiêu đề phương thức nhưng có định nghĩa khác nhau, dẫn đến sự không nhất quán.
  • Hai giao diện có thể không tương thích nếu bạn xác định hai hằng số có cùng tên và giá trị khác nhau:
public interface Interface1{
public static final int ANSWEAR = 0;
}
public interface Interface1{
public static final int ANSWEAR = 3;
}
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION