Khai báo cho một phương thức hoặc hàm tạo khai báo số và loại đối số cho phương thức hoặc hàm tạo đó. Ví dụ: sau đây là phương pháp tính khoản thanh toán hàng tháng cho khoản vay mua nhà, dựa trên số tiền vay, lãi suất, thời hạn của khoản vay (số kỳ hạn) và giá trị tương lai của khoản vay Show public double computePayment( double loanAmt, double rate, double futureValue, int numPeriods) { double interest = rate / 100.0; double partial1 = Math.pow((1 + interest), - numPeriods); double denominator = (1 - partial1) / interest; double answer = (-loanAmt / denominator) - ((futureValue * partial1) / denominator); return answer; } Phương pháp này có bốn tham số. số tiền cho vay, lãi suất, giá trị tương lai và số kỳ hạn. Ba số đầu tiên là số dấu phẩy động có độ chính xác kép và số thứ tư là số nguyên. Các tham số được sử dụng trong thân phương thức và trong thời gian chạy sẽ nhận các giá trị của các đối số được truyền vào Ghi chú. Tham số đề cập đến danh sách các biến trong khai báo phương thức. Đối số là các giá trị thực được truyền vào khi phương thức được gọi. Khi bạn gọi một phương thức, các đối số được sử dụng phải khớp với các tham số của khai báo về loại và thứ tự Loại thông sốBạn có thể sử dụng bất kỳ kiểu dữ liệu nào cho tham số của phương thức hoặc hàm tạo. Điều này bao gồm các kiểu dữ liệu nguyên thủy, chẳng hạn như double, float và số nguyên, như bạn đã thấy trong phương thức public Polygon polygonFrom(Point[] corners) { // method body goes here }1 và các kiểu dữ liệu tham chiếu, chẳng hạn như đối tượng và mảng Đây là một ví dụ về phương thức chấp nhận một mảng làm đối số. Trong ví dụ này, phương thức tạo một đối tượng public Polygon polygonFrom(Point[] corners) { // method body goes here }2 mới và khởi tạo nó từ một mảng các đối tượng public Polygon polygonFrom(Point[] corners) { // method body goes here }3 (giả sử rằng public Polygon polygonFrom(Point[] corners) { // method body goes here }3 là một lớp đại diện cho tọa độ x, y) public Polygon polygonFrom(Point[] corners) { // method body goes here } Bạn có thể sử dụng một cấu trúc gọi là varargs để chuyển một số lượng giá trị tùy ý cho một phương thức. Bạn sử dụng varargs khi bạn không biết có bao nhiêu loại đối số cụ thể sẽ được truyền cho phương thức. Đó là một lối tắt để tạo một mảng theo cách thủ công (phương pháp trước đó có thể đã sử dụng các biến thể thay vì một mảng) Để sử dụng varargs, bạn theo dõi loại tham số cuối cùng bằng dấu chấm lửng (ba dấu chấm,. ), sau đó là khoảng trắng và tên tham số. Sau đó, phương thức có thể được gọi với bất kỳ số lượng nào của tham số đó, kể cả không public Polygon polygonFrom(Point.. corners) { int numberOfSides = corners.length; double squareOfSide1, lengthOfSide1; squareOfSide1 = (corners[1].x - corners[0].x) * (corners[1].x - corners[0].x) + (corners[1].y - corners[0].y) * (corners[1].y - corners[0].y); lengthOfSide1 = Math.sqrt(squareOfSide1); // more method body code follows that creates and returns a // polygon connecting the Points } Bạn có thể thấy rằng, bên trong phương thức, public Polygon polygonFrom(Point[] corners) { // method body goes here }5 được coi như một mảng. Phương thức có thể được gọi bằng một mảng hoặc bằng một chuỗi các đối số. Mã trong nội dung phương thức sẽ coi tham số là một mảng trong cả hai trường hợp Bạn sẽ thường thấy các varargs với các phương pháp in; public PrintStream printf(String format, Object.. args) cho phép bạn in một số lượng đối tượng tùy ý. Nó có thể được gọi như thế này public Polygon polygonFrom(Point[] corners) { // method body goes here }0 hoặc như thế này public Polygon polygonFrom(Point[] corners) { // method body goes here }1 hoặc với một số đối số khác nhau Tên tham sốKhi bạn khai báo một tham số cho một phương thức hoặc một hàm tạo, bạn cung cấp tên cho tham số đó. Tên này được sử dụng trong nội dung phương thức để chỉ đối số được truyền vào Tên của một tham số phải là duy nhất trong phạm vi của nó. Nó không thể giống với tên của một tham số khác cho cùng một phương thức hoặc hàm tạo và nó không thể là tên của một biến cục bộ trong phương thức hoặc hàm tạo đó Một tham số có thể có cùng tên với một trong các trường của lớp. Nếu đây là trường hợp, tham số được cho là che khuất trường. Các trường tạo bóng có thể làm cho mã của bạn khó đọc và thường chỉ được sử dụng trong các hàm tạo và các phương thức đặt một trường cụ thể. Ví dụ, hãy xem xét lớp public Polygon polygonFrom(Point[] corners) { // method body goes here }7 sau đây và phương thức public Polygon polygonFrom(Point[] corners) { // method body goes here }8 của nó public Polygon polygonFrom(Point[] corners) { // method body goes here }4 Lớp public Polygon polygonFrom(Point[] corners) { // method body goes here }7 có ba trường. public Polygon polygonFrom(Point.. corners) { int numberOfSides = corners.length; double squareOfSide1, lengthOfSide1; squareOfSide1 = (corners[1].x - corners[0].x) * (corners[1].x - corners[0].x) + (corners[1].y - corners[0].y) * (corners[1].y - corners[0].y); lengthOfSide1 = Math.sqrt(squareOfSide1); // more method body code follows that creates and returns a // polygon connecting the Points }0, public Polygon polygonFrom(Point.. corners) { int numberOfSides = corners.length; double squareOfSide1, lengthOfSide1; squareOfSide1 = (corners[1].x - corners[0].x) * (corners[1].x - corners[0].x) + (corners[1].y - corners[0].y) * (corners[1].y - corners[0].y); lengthOfSide1 = Math.sqrt(squareOfSide1); // more method body code follows that creates and returns a // polygon connecting the Points }1 và public Polygon polygonFrom(Point.. corners) { int numberOfSides = corners.length; double squareOfSide1, lengthOfSide1; squareOfSide1 = (corners[1].x - corners[0].x) * (corners[1].x - corners[0].x) + (corners[1].y - corners[0].y) * (corners[1].y - corners[0].y); lengthOfSide1 = Math.sqrt(squareOfSide1); // more method body code follows that creates and returns a // polygon connecting the Points }2. Phương thức public Polygon polygonFrom(Point[] corners) { // method body goes here }8 có hai tham số, mỗi tham số có cùng tên với một trong các trường. Mỗi tham số phương thức làm mờ trường chia sẻ tên của nó. Vì vậy, việc sử dụng các tên đơn giản public Polygon polygonFrom(Point.. corners) { int numberOfSides = corners.length; double squareOfSide1, lengthOfSide1; squareOfSide1 = (corners[1].x - corners[0].x) * (corners[1].x - corners[0].x) + (corners[1].y - corners[0].y) * (corners[1].y - corners[0].y); lengthOfSide1 = Math.sqrt(squareOfSide1); // more method body code follows that creates and returns a // polygon connecting the Points }0 hoặc public Polygon polygonFrom(Point.. corners) { int numberOfSides = corners.length; double squareOfSide1, lengthOfSide1; squareOfSide1 = (corners[1].x - corners[0].x) * (corners[1].x - corners[0].x) + (corners[1].y - corners[0].y) * (corners[1].y - corners[0].y); lengthOfSide1 = Math.sqrt(squareOfSide1); // more method body code follows that creates and returns a // polygon connecting the Points }1 trong phần thân của phương thức đề cập đến tham số, không phải trường. Để truy cập trường, bạn phải sử dụng tên đủ điều kiện. Điều này sẽ được thảo luận sau trong bài học này trong phần có tiêu đề "Sử dụng từ khóa public Polygon polygonFrom(Point.. corners) { int numberOfSides = corners.length; double squareOfSide1, lengthOfSide1; squareOfSide1 = (corners[1].x - corners[0].x) * (corners[1].x - corners[0].x) + (corners[1].y - corners[0].y) * (corners[1].y - corners[0].y); lengthOfSide1 = Math.sqrt(squareOfSide1); // more method body code follows that creates and returns a // polygon connecting the Points }6. " Truyền các đối số kiểu dữ liệu nguyên thủyCác đối số nguyên thủy, chẳng hạn như một public Polygon polygonFrom(Point.. corners) { int numberOfSides = corners.length; double squareOfSide1, lengthOfSide1; squareOfSide1 = (corners[1].x - corners[0].x) * (corners[1].x - corners[0].x) + (corners[1].y - corners[0].y) * (corners[1].y - corners[0].y); lengthOfSide1 = Math.sqrt(squareOfSide1); // more method body code follows that creates and returns a // polygon connecting the Points }7 hoặc một public Polygon polygonFrom(Point.. corners) { int numberOfSides = corners.length; double squareOfSide1, lengthOfSide1; squareOfSide1 = (corners[1].x - corners[0].x) * (corners[1].x - corners[0].x) + (corners[1].y - corners[0].y) * (corners[1].y - corners[0].y); lengthOfSide1 = Math.sqrt(squareOfSide1); // more method body code follows that creates and returns a // polygon connecting the Points }8, được truyền vào các phương thức theo giá trị. Điều này có nghĩa là mọi thay đổi đối với giá trị của các tham số chỉ tồn tại trong phạm vi của phương thức. Khi phương thức trả về, các tham số sẽ biến mất và mọi thay đổi đối với chúng sẽ bị mất. Đây là một ví dụ public Polygon polygonFrom(Point[] corners) { // method body goes here }5 Khi bạn chạy chương trình này, đầu ra là public Polygon polygonFrom(Point[] corners) { // method body goes here }6 Truyền đối số kiểu dữ liệu tham chiếuCác tham số kiểu dữ liệu tham chiếu, chẳng hạn như các đối tượng, cũng được truyền vào các phương thức theo giá trị. Điều này có nghĩa là khi phương thức trả về, tham chiếu được truyền vào vẫn tham chiếu đến cùng một đối tượng như trước. Tuy nhiên, giá trị của các trường của đối tượng có thể được thay đổi trong phương thức, nếu chúng có cấp độ truy cập phù hợp Ví dụ, hãy xem xét một phương thức trong một lớp tùy ý di chuyển các đối tượng public Polygon polygonFrom(Point[] corners) { // method body goes here }7 public Polygon polygonFrom(Point[] corners) { // method body goes here }8 Hãy để phương thức được gọi với các đối số này public Polygon polygonFrom(Point[] corners) { // method body goes here }0 Bên trong phương thức, public PrintStream printf(String format, Object.. args)0 ban đầu đề cập đến public PrintStream printf(String format, Object.. args)1. Phương thức thay đổi tọa độ x và y của đối tượng mà public PrintStream printf(String format, Object.. args)0 tham chiếu (nghĩa là public PrintStream printf(String format, Object.. args)1) lần lượt là 23 và 56. Những thay đổi này sẽ tồn tại khi phương thức trả về. Sau đó, public PrintStream printf(String format, Object.. args)0 được gán một tham chiếu đến một đối tượng public Polygon polygonFrom(Point[] corners) { // method body goes here }7 mới với public PrintStream printf(String format, Object.. args)6. Tuy nhiên, việc gán lại này không có giá trị lâu dài vì tham chiếu được truyền vào theo giá trị và không thể thay đổi. Trong phương thức, đối tượng được trỏ tới bởi public PrintStream printf(String format, Object.. args)0 đã thay đổi, nhưng khi phương thức trả về, public PrintStream printf(String format, Object.. args)1 vẫn tham chiếu tới cùng một đối tượng public Polygon polygonFrom(Point[] corners) { // method body goes here }7 như trước khi phương thức được gọi Chúng ta có thể chuyển các đối tượng lớp dưới dạng đối số hàm trong Python không?Bạn có thể truyền đối tượng làm đối số cho hàm theo cách thông thường.
__ str __ trong Python là gì?Trăn __str__()
. Phương thức này được gọi khi hàm print() hoặc str() được gọi trên một đối tượng. Phương thức này phải trả về đối tượng String. This method returns the string representation of the object. This method is called when print() or str() function is invoked on an object. This method must return the String object.
__ init __ có phải là hàm tạo không?Phương thức đặc biệt __init__ là hàm tạo của Python . Với sự hiểu biết về lập trình hướng đối tượng và các lớp, bây giờ chúng ta hãy xem cách phương thức __init__ hoạt động trong chương trình Python.
__ mới __ trong Python là gì?Python __new__() là phương thức khởi tạo kiểm soát việc tạo phiên bản mới . Nó được gọi đầu tiên và nó trả về một thể hiện của lớp mới. Python __init__() là phương thức khởi tạo để thiết lập các thuộc tính (i. e. , trạng thái) của phiên bản mới được tạo. Nó được gọi sau khi tạo và không trả về gì cả, tôi. e. , Không có. |