Làm cách nào để gọi một hàm của một lớp mà không tạo đối tượng Python?

Phương thức sơ thẩm là các phương thức yêu cầu một đối tượng của lớp của nó được tạo trước khi nó có thể được gọi. Để gọi một phương thức thể hiện, chúng ta phải tạo một Đối tượng của lớp mà phương thức đó được định nghĩa.  

public void geek(String name)
{
 // code to be executed....
}
// Return type can be int, float String or user defined data type.

Cấp phát bộ nhớ. Bản thân các phương thức này được lưu trữ trong không gian Tạo vĩnh viễn của heap nhưng các tham số (đối số được truyền cho chúng) và các biến cục bộ của chúng cũng như giá trị được trả về được phân bổ trong ngăn xếp. Chúng có thể được gọi trong cùng một lớp mà chúng cư trú hoặc từ các lớp khác nhau được định nghĩa trong cùng một gói hoặc các gói khác tùy thuộc vào loại truy cập được cung cấp cho phương thức thể hiện mong muốn
Điểm quan trọng.  
 

  • (Các) phương thức sơ thẩm thuộc về Đối tượng của lớp, không thuộc về lớp tôi. e. chúng có thể được gọi sau khi tạo Đối tượng của lớp
  • Các phương thức sơ thẩm không được lưu trữ trên cơ sở từng trường hợp, ngay cả với các phương thức ảo. Chúng được lưu trữ trong một vị trí bộ nhớ duy nhất và chúng chỉ “biết” chúng thuộc về đối tượng nào vì con trỏ này được truyền khi bạn gọi chúng
  • Chúng có thể bị ghi đè vì chúng được giải quyết bằng liên kết động trong thời gian chạy

Dưới đây là việc triển khai truy cập phương thức thể hiện

Java




// Example to illustrate accessing the instance method .

import java.io.*;

 

class Foo {

 

GeeksforGeeks
0
GeeksforGeeks
1
GeeksforGeeks
2
GeeksforGeeks
3

 

GeeksforGeeks
0
GeeksforGeeks
5

GeeksforGeeks
0
GeeksforGeeks
7

GeeksforGeeks
0
GeeksforGeeks
9

GeeksforGeeks
0
public static void geek(String name)
{
 // code to be executed....
}

// Must have static modifier in their declaration.
// Return type can be int, float, String or user defined data type.
1
public static void geek(String name)
{
 // code to be executed....
}

// Must have static modifier in their declaration.
// Return type can be int, float, String or user defined data type.
2
public static void geek(String name)
{
 // code to be executed....
}

// Must have static modifier in their declaration.
// Return type can be int, float, String or user defined data type.
3
public static void geek(String name)
{
 // code to be executed....
}

// Must have static modifier in their declaration.
// Return type can be int, float, String or user defined data type.
4
public static void geek(String name)
{
 // code to be executed....
}

// Must have static modifier in their declaration.
// Return type can be int, float, String or user defined data type.
5

public static void geek(String name)
{
 // code to be executed....
}

// Must have static modifier in their declaration.
// Return type can be int, float, String or user defined data type.
6

 

class

public static void geek(String name)
{
 // code to be executed....
}

// Must have static modifier in their declaration.
// Return type can be int, float, String or user defined data type.
8

GeeksforGeeks
0
public static void geek(String name)
{
 // code to be executed....
}

// Must have static modifier in their declaration.
// Return type can be int, float, String or user defined data type.
1
vaibhav
mohit
1
public static void geek(String name)
{
 // code to be executed....
}

// Must have static modifier in their declaration.
// Return type can be int, float, String or user defined data type.
2
vaibhav
mohit
3

GeeksforGeeks
0
vaibhav
mohit
5

 

vaibhav
mohit
6_______21_______7

vaibhav
mohit
6_______21_______9
static int i = 1;
static Object obj = new Object();
0
static int i = 1;
static Object obj = new Object();
1

 

vaibhav
mohit
6_______30_______3

vaibhav
mohit
6_______30_______5
static int i = 1;
static Object obj = new Object();
6
static int i = 1;
static Object obj = new Object();
7

vaibhav
mohit
6_______30_______9

GeeksforGeeks
0
public static void geek(String name)
{
 // code to be executed....
}

// Must have static modifier in their declaration.
// Return type can be int, float, String or user defined data type.
6

public static void geek(String name)
{
 // code to be executed....
}

// Must have static modifier in their declaration.
// Return type can be int, float, String or user defined data type.
6

Đầu ra

GeeksforGeeks

 

Phương thức tĩnh

Các phương thức tĩnh là các phương thức trong Java có thể được gọi mà không cần tạo đối tượng của lớp. Chúng được tham chiếu bởi chính tên lớp hoặc tham chiếu tới Đối tượng của lớp đó.   

public static void geek(String name)
{
 // code to be executed....
}

// Must have static modifier in their declaration.
// Return type can be int, float, String or user defined data type.

Cấp phát bộ nhớ.  

Chúng được lưu trữ trong không gian Tạo vĩnh viễn của đống vì chúng được liên kết với lớp mà chúng cư trú chứ không phải đối tượng của lớp đó. Nhưng các biến cục bộ của chúng và (các) đối số được truyền cho chúng được lưu trữ trong ngăn xếp. Vì chúng thuộc về lớp nên chúng có thể được gọi đến mà không cần tạo đối tượng của lớp

Điểm quan trọng.   

  • (Các) phương thức tĩnh được liên kết với lớp mà chúng cư trú. e. chúng được gọi mà không tạo một thể hiện của lớp tôi. e Tên Lớp. methodName(args)
  • Chúng được thiết kế với mục đích được chia sẻ giữa tất cả các đối tượng được tạo từ cùng một lớp
  • Các phương thức tĩnh không thể bị ghi đè, vì chúng được giải quyết bằng cách sử dụng liên kết tĩnh bởi trình biên dịch tại thời điểm biên dịch. Tuy nhiên, chúng ta có thể có các phương thức cùng tên được khai báo tĩnh trong cả lớp cha và lớp con, nhưng nó sẽ được gọi là Ẩn phương thức vì phương thức lớp dẫn xuất sẽ ẩn phương thức lớp cơ sở

Dưới đây là hình minh họa truy cập các phương thức tĩnh.  

Java




// Example to illustrate accessing the instance method .3

// Example to illustrate accessing the instance method .4

import java.io.*;

 

class // Example to illustrate accessing the instance method .8

 

GeeksforGeeks
0
public static void geek(String name)
{
 // code to be executed....
}

// Must have static modifier in their declaration.
// Return type can be int, float, String or user defined data type.
1
vaibhav
mohit
1 import2
GeeksforGeeks
2
GeeksforGeeks
3

 

GeeksforGeeks
0
public static void geek(String name)
{
 // code to be executed....
}

// Must have static modifier in their declaration.
// Return type can be int, float, String or user defined data type.
1
vaibhav
mohit
1
public static void geek(String name)
{
 // code to be executed....
}

// Must have static modifier in their declaration.
// Return type can be int, float, String or user defined data type.
2 import9

GeeksforGeeks
0
vaibhav
mohit
5

vaibhav
mohit
6_______92_______3

GeeksforGeeks
0
public static void geek(String name)
{
 // code to be executed....
}

// Must have static modifier in their declaration.
// Return type can be int, float, String or user defined data type.
6

public static void geek(String name)
{
 // code to be executed....
}

// Must have static modifier in their declaration.
// Return type can be int, float, String or user defined data type.
6

 

class

public static void geek(String name)
{
 // code to be executed....
}

// Must have static modifier in their declaration.
// Return type can be int, float, String or user defined data type.
8

GeeksforGeeks
0
public static void geek(String name)
{
 // code to be executed....
}

// Must have static modifier in their declaration.
// Return type can be int, float, String or user defined data type.
1
vaibhav
mohit
1
public static void geek(String name)
{
 // code to be executed....
}

// Must have static modifier in their declaration.
// Return type can be int, float, String or user defined data type.
2
vaibhav
mohit
3

GeeksforGeeks
0
vaibhav
mohit
5

 

vaibhav
mohit
6_______93_______7

vaibhav
mohit
6_______93_______9

vaibhav
mohit
6_______94_______1Foo {2
static int i = 1;
static Object obj = new Object();
7

vaibhav
mohit
6_______94_______5

 

vaibhav
mohit
6_______93_______7

vaibhav
mohit
6_______94_______9

vaibhav
mohit
6_______1_______01
static int i = 1;
static Object obj = new Object();
0
GeeksforGeeks
03

vaibhav
mohit
6_______1_______05
GeeksforGeeks
06
static int i = 1;
static Object obj = new Object();
7

vaibhav
mohit
6______1_______09

GeeksforGeeks
0
public static void geek(String name)
{
 // code to be executed....
}

// Must have static modifier in their declaration.
// Return type can be int, float, String or user defined data type.
6

public static void geek(String name)
{
 // code to be executed....
}

// Must have static modifier in their declaration.
// Return type can be int, float, String or user defined data type.
6

Đầu ra

vaibhav
mohit

Ghi chú. Các biến tĩnh và các giá trị của chúng (nguyên hàm hoặc tham chiếu) được xác định trong lớp được lưu trữ trong không gian bộ nhớ PermGen.  
 

Nếu biến tĩnh đề cập đến một Đối tượng thì sao?

static int i = 1;
static Object obj = new Object();

Trong dòng đầu tiên, giá trị 1 sẽ được lưu trữ trong phần PermGen. Trong dòng thứ hai, obj tham chiếu sẽ được lưu trữ trong phần PermGen và Đối tượng mà nó đề cập đến sẽ được lưu trữ trong phần heap

Chúng ta có thể gọi một hàm lớp mà không tạo đối tượng của nó không?

Không thể gọi phương thức thể hiện nếu không có thể hiện/đối tượng . Các phương thức lớp (tĩnh) được gọi trực tiếp từ lớp, chúng có thể được gọi ngay cả khi không có phiên bản nào.

Chúng ta có thể gọi phương thức lớp mà không tạo phiên bản Python không?

Chúng ta cũng có thể tạo các phương thức lớp có thể được gọi mà không cần có phiên bản . Khi đó, phương thức này tương tự như một hàm Python đơn giản, ngoại trừ việc nó được chứa bên trong một lớp và tên phương thức phải được đặt trước bởi tên lớp. Các phương thức như vậy được gọi là phương thức tĩnh.

Bạn có thể gọi một hàm trong lớp Python không?

Cú pháp “gọi” của Python, những (. ) dấu ngoặc đơn, có thể tạo thể hiện của lớp hoặc gọi hàm . Nhưng cú pháp “gọi” này cũng có thể được sử dụng để gọi một đối tượng.

Loại phương thức nào trong Python được gọi mà không sử dụng một đối tượng của lớp của nó?

Phương thức tĩnh . Bạn có thể sử dụng một phương thức tĩnh khi bạn có một lớp nhưng bạn không cần một thể hiện cụ thể để truy cập phương thức đó.