- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在下面的代码块中,有几个(故意的)错误,我的任务是找到它们并解释这些错误是否会导致编译代码时出现问题,或者至少会导致一些逻辑问题。
lớp công khai Person {
chuỗi tên riêng tư;
public Person(String name) {
name = name;
}
công khai String toString() {
return "Name: " + name;
}
}
public class Student expands Person {
private int Nr;
public Student(String name, int Nr) {
name = name;
Nr = Nr;
}
công khai String toString() {
return toString() + " Nr: " + Nr;
}
}
据我所知,第一个错误是在 Người
类的第四行。虽然 name = name
不应导致编译错误,但它应该会产生逻辑问题,因为构造函数 tên
的形参覆盖了对象变量 tên
我们事先定义的。实际代码将是 this.name = name
。
除此之外,我没有发现 Người
类有任何问题。
“Student”类中的第一个错误是关键字expands
,应该是mở rộng
。它应该会导致编译错误。
在构造函数Student中,我们写name = name
。我不确定这是否会导致逻辑/编译错误。也许有人可以帮我解决这个问题?无论如何,我们应该在这里通过编写 super(name)
来调用父类(super class),因为父类(super class) Người
中已经给出了学生的 tên
.
再一次,我们要写this.Nr = Nr
。
最后但同样重要的是,我们不想返回 toString() + ...
,因为,好吧,我猜这会调用方法 toString()
无限频繁并导致堆栈溢出。
Tôi đã bỏ lỡ điều gì à?
câu trả lời hay nhất
你的分析是正确的。
Học sinh
的构造函数中你只遗漏了一个错误
public Student(String name, int Nr) {
name = name;
Nr = Nr;
}
将其更改为
public Student(String name, int Nr) {
this.name = tên;
Nr = Nr;
}
将生成一个不可编译的代码,因为在父类(super class)中tên
是一个私有(private)字段,所以在类Học sinh
中是不可见的。
Để ý:虽然将变量 Nr
命名为大写 N 并不是错误,但它违反了变量命名的常见最佳实践。变量或方法应以小写字母开头。类或接口(interface)应以大写字母开头。
@Julian,不仅仅是写作
public Student(String name, int Nr) {
super(name);
this.Nr = Nr;
}
会起作用,但也是必要的。因为父类(super class)不公开默认构造函数。所以Học sinh
类需要显式调用父类(super class)的构造函数。
关于java - 在给定的代码块中查找错误(类的扩展,个人/学生),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42363743/
Tôi đang viết một phương thức Java có chữ ký sau. void Logger(Phương thức phương thức, Object[] args); Nếu một phương thức (chẳng hạn như ABC() ) gọi phương thức này Logger, thì nó sẽ
Tôi mới làm quen với Java. Vấn đề của tôi là chương trình Java của tôi không thể tìm thấy JButton mà tôi đang cố sử dụng làm tệp hình ảnh. (Hiện tại mã này không làm gì cả vì tôi chỉ có được giao diện mong muốn trước tiên). Đây là mã lớp chính của tôi: packag
Được rồi, hôm nay tôi sẽ thực hiện một cuộc phỏng vấn và tôi đã viết mã Java được nhiều năm. Trong cuộc phỏng vấn, anh ấy nói "Việc thu gom rác Java là một vấn đề hóc búa và tôi có một số người bạn đang cố gắng tìm ra nó. Bạn thấy thế nào về vấn đề này?". Cô ấy đang cố nói dối tôi phải không? Hoặc cả cuộc đời tôi
Bạn tôi đưa cho tôi một câu đố để giải. Nó diễn ra như thế này: Có 100 người trong số họ, đến lượt mình, thực hiện như sau.
Nếu tôi biên dịch một ứng dụng sử dụng mã Java 5 thành mã byte, liệu tệp .class kết quả có chạy trong Java 1.4 không? Nếu cái sau hoạt động và tôi đang cố gắng sử dụng Jav trong ứng dụng Java 1.4 của mình
Có những câu hỏi về lý do tại sao Java không hỗ trợ các kiểu không dấu và một số câu hỏi về việc xử lý các kiểu không dấu. Tôi đã thực hiện một số tìm kiếm và có vẻ như Scala cũng không hỗ trợ các kiểu dữ liệu không dấu. Hạn chế là Java và S
Tôi chỉ muốn biết liệu mã byte được tạo trong một phiên bản java có chạy trên các phiên bản java khác Câu trả lời hay nhất Thông thường, mã byte có thể chạy trên các phiên bản java mới hơn mà không cần sửa đổi. Nó sẽ không chạy trên các phiên bản cũ hơn trừ khi bạn sử dụng các tham số đặc biệt (
Tôi có một câu hỏi cơ bản về việc thực thi các chương trình java trong dấu nhắc lệnh. Trên một số máy chúng ta cần chỉ định -cp. (đường dẫn lớp) thực thi chương trình java cùng lúc (test là tên file java và file .class tồn tại trong cùng thư mục) jav
Tôi đã đọc StackOverflow được một thời gian và tôi mới có đủ can đảm để đặt câu hỏi. Tôi 20 tuổi và hiện đang học tại một trường đại học CNTT ở quê hương (Cluj-Napoca, Romania). Giới thiệu thế đủ rồi :D Về cơ bản, tôi có một công ty cung cấp ứng dụng kế toán
Tôi không thể public JSONObject parseXML(String xml) { JSONObject jsonObject = XML.toJSONObject(xml); r
Tôi đã triển khai một ngôn ngữ thông dịch đơn giản với kiểu gõ động trong Java. Thật không may tôi gặp phải vấn đề sau. Đoạn mã sau được sử dụng trong quá trình thử nghiệm: def main() { def ks = Map[[1, 2]].keySet()
Luôn nhắc nhập một số từ 1 đến 10 - kết quả sẽ cộng thêm st, rd, th và nd vào số đó. Viết chương trình nhắc người dùng nhập bất kỳ số nguyên nào từ 1 đến 10, sau đó hiển thị số nguyên đó ở dạng thứ tự có thêm hậu tố. công cộng
Tôi có DownloadFile.java này và nó tải xuống tệp như mong đợi: import java.io.*; import java.net.URL public class DownloadFile {
Tôi muốn thêm độ trễ vào GUI. Tôi đặt 2 vòng lặp for rồi vẽ lại nhãn, nhưng 2 vòng lặp for này được thực thi lần lượt và nhãn được vẽ lại đến nhãn cuối cùng. Tôi có thể làm gì? for(int i=0;
Tôi đang thực hiện một số thử nghiệm với các mục danh sách của đối tượng Sinh viên, nhưng tôi thích tạo một danh sách được mã hóa cứng trong đối tượng lớp java rồi lấy dữ liệu từ đó thay vì kết nối với cơ sở dữ liệu và chọn các bản ghi trong tập kết quả. Tuy nhiên, đã lâu rồi tôi mới làm việc này,
Tôi biết rằng việc tạo đối tượng được chia thành ba phần: khai báo khởi tạo khởi tạo classA{} classB mở rộng classA{} classA obj = khởi tạo classB mới (1,1);
Tôi quan tâm đến việc xây dựng hệ thống theo dõi xe bằng GPRS. Tuy nhiên, tôi có một số câu hỏi dành cho những ai đã từng làm việc này trước đây: GPRS có phải là công nghệ tốt nhất không? Mọi người có nhận thức được vấn đề gì không? Tôi dự định sử dụng Java/Java EE - có công nghệ nào tốt hơn không? nếu như
Tôi có thể đảo ngược mảng bằng phương pháp đệ quy như: array={1,2,3,4,5} array result={5,4,3,2,1} nhưng kết quả của tôi là cùng một mảng và tôi không biết Tại sao, xin hãy giúp tôi. lớp công khai Đệ quy { p
Có một cách tiêu chuẩn để làm điều này? Bao gồm mã nguồn Java - Mã kiểm tra - Đơn vị liên kết Ant hoặc Maven Tích hợp liên tục (có thể là kiểm soát hành trình) Công cụ kiểm soát phiên bản ClearCase Triển khai đến máy chủ ứng dụng Cuối cùng, tôi muốn có một môi trường tích hợp và xây dựng tự động.
Tôi thậm chí không biết liệu điều này có khả thi hay không và tôi rất nghi ngờ điều đó là có thể, nhưng nếu có, bạn có thể cho tôi biết cách thực hiện không? Tôi chỉ muốn biết cách in một số văn bản từ máy in. Có ý tưởng gì không? Câu trả lời hay nhất Đây là một cái gì đó đơn giản hơn. nhập javax.swin
Tôi là một lập trình viên xuất sắc, rất giỏi!