2013-06-13 45 views
5

Tại sao bạn có thể nhận được các giá trị x và y từ một lớp java.awt.Point bằng cách sử dụng một phương thức và tham chiếu giá trị?Hai cách để nhận giá trị của đối tượng Point?

Point p = new Point(10,20); 
int x0 = p.getX(); 
int y0 = p.getY(); 
int x1 = p.x; 
int y1 = p.y; 
System.out.println(x0+"=="+x1+"and"+y0+"=="+y1); 

Những người đã khiến lớp này quên tạo x và y là riêng tư?

+0

Một đối tượng khá đơn giản như thế này được sử dụng chủ yếu trong các công cụ hình học liên quan đến là dễ dàng hơn để sử dụng với các lĩnh vực công cộng, ví dụ như vị trí incrementing được thực hiện với .x + = 1. Không phải mọi lớp đều cần phải định cư/getters. – arynaq

+0

"Những người đã làm cho lớp này quên làm x và y riêng?" Vâng, về cơ bản; Hãy nhớ rằng 'java.awt.Point' là một trong những lớp Java lâu đời nhất, vì vậy nó đã được giới thiệu trước khi tất cả các mẫu đóng gói tốt đã thực sự nổi tiếng. –

+0

@LouisWasserman tôi không tin, việc ẩn thông tin đóng gói không phải là từ 'thời đại java', tôi nghĩ là arynaq nói nhiều hơn là – nachokk

Trả lời

4

Nhìn vào javadoc, những thứ này dường như trả về các loại khác nhau. p.x trả về một số int trong khi p.getX() trả về số double.

Mã nguồn của Point thấy điều này:

public int x; 
//... 
public double getX() { 
    return x; 
} 

Vì vậy, có vẻ như đó là mục đích duy nhất của nó. getX() là cách thuận tiện hơn để nhận tọa độ dưới dạng double.

1

Thay đổi để

double x0 = p.getX(); 

// getX returns the X coordinate of this Point2D in double precision 
Các vấn đề liên quan