2009-05-19 46 views

Trả lời

57

Chỉ cần đặt hai tệp vào cùng một thư mục. Dưới đây là một ví dụ:

Person.java

public class Person { 
    public String name; 

    public Person(String name) { 
    this.name = name; 
    } 

    public String toString() { 
    return name; 
    } 
} 

Student.java

public class Student extends Person { 
    public String somethingnew; 

    public Student(String name) { 
    super(name); 
    somethingnew = "surprise!"; 
    } 

    public String toString() { 
    return super.toString() + "\t" + somethingnew; 
    } 

    public static void main(String[] args) { 
    Person you = new Person("foo"); 
    Student me = new Student("boo"); 

    System.out.println("Your name is " + you); 
    System.out.println("My name is " + me); 
    } 
} 

Chạy Student (vì nó có chức năng chính) mang lại cho chúng ta kết quả mong muốn:

Your name is foo 
My name is boo surprise! 
+4

Bạn không cần một số loại câu lệnh nhập khẩu ở đầu Student.java? Câu lệnh nhập khẩu đó trông như thế nào? –

+4

@ AndrewM.Farrell Không, một tuyên bố nhập khẩu là không cần thiết. Đơn giản chỉ cần đặt các tập tin trong cùng một thư mục và biên dịch chúng. Họ sẽ có thể "nhìn thấy" nhau tốt. – ApproachingDarknessFish

2

Bạn không.

Nếu bạn muốn mở rộng Person với sinh viên, chỉ cần làm:

public class Student extends Person 
{ 
} 

Và chắc chắn rằng, khi bạn biên dịch cả hai lớp, người ta có thể tìm thấy một trong những khác.

Bạn đang sử dụng IDE nào?

+0

Trước khi tôi làm mở rộng cho lớp công chúng tôi, không cho tôi phải bao gồm các tập tin cho Người vào Studnet 1st? Bạn có biết câu lệnh cho tệp bao gồm trong java không? Ví dụ: trong php, quy tắc được bao gồm ('directoty/file_name'); –

+0

Xin chào Jin. Không, bạn không cần phải "bao gồm" tệp cho Người. Bạn chỉ cần mở rộng lớp học. Nếu các lớp không nằm trong cùng một gói, bạn "nhập" lớp đó. Nhưng không cần phải bao gồm các tập tin. Trong thực tế, bạn không thể làm điều đó. Ngay cả khi bạn muốn. Bạn đang sử dụng một loại IDE nào đó? Eclipse? Netbeans? –

+0

Tự động nếu các lớp nằm trong cùng một gói (bao gồm các gói mặc định cho các tệp nguồn không có gói rõ ràng). –

19

Java không sử dụng bao gồm cách C thực hiện. Thay vào đó, java sử dụng một khái niệm gọi là classpath, một danh sách các tài nguyên chứa các lớp java. JVM có thể truy cập bất kỳ lớp nào trên classpath theo tên vì vậy nếu bạn có thể mở rộng các lớp và tham chiếu đến các kiểu đơn giản bằng cách khai báo chúng. Điều đóng cho một câu lệnh java bao gồm là 'import'. Vì các lớp được chia thành các không gian tên như foo.bar.Baz, nếu bạn đang ở trong gói qux và bạn muốn sử dụng lớp Baz mà không phải sử dụng tên đầy đủ của foo.bar.Baz, thì bạn cần sử dụng tuyên bố nhập khẩu vào đầu tập tin java của bạn như vậy: import foo.bar.Baz

23

những gì còn thiếu từ tất cả các giải thích là một thực tế rằng Java có một quy tắc nghiêm ngặt của tên class = tên file. Có nghĩa là nếu bạn có một lớp "Person", phải nằm trong một tệp có tên "Person.java". Do đó, nếu một lớp cố truy cập "Person" thì tên tệp là không cần thiết, vì nó phải là "Person.java".

Đến với C/C++, tôi gặp vấn đề tương tự. Câu trả lời là tạo một lớp mới (trong một tệp mới phù hợp với tên lớp) và tạo một chuỗi công khai. Đây sẽ là tệp "tiêu đề" của bạn. Sau đó, sử dụng nó trong tập tin chính của bạn bằng cách sử dụng từ khóa "mở rộng".

Dưới đây là câu trả lời của bạn:

  1. Tạo một tập tin gọi Include.java. Trong tệp này, hãy thêm điều này:

    public class Include { 
        public static String MyLongString= "abcdef"; 
    } 
    
  2. Tạo tệp khác, ví dụ: User.java.Trong tập tin này, hãy đặt:

    import java.io.*; 
    
    public class User extends Include { 
        System.out.println(Include.MyLongString); 
    } 
    
+1

cảm ơn đã lưu ngày của tôi –

Các vấn đề liên quan