2010-08-25 35 views
7

trong java bất kỳ biến trừu tượng nào ở đó? Tôi đã làm việc này biến trừu tượng trong constructor tôi am nort chắc chắn nhưng tôi nghĩ rằng constructor hỗ trợ static variables.pls làm rõ sự nghi ngờ của tôiCó bất kỳ biến trừu tượng nào trong java không?

+3

Nếu biến có thể là 'abstract', bạn nghĩ điều đó có nghĩa là gì? Có lẽ bạn nên điều tra động cơ của bạn. – polygenelubricants

Trả lời

19

Trong java chỉ lớp và phương pháp có thể được trừu tượng. Không thể khai báo biến. Tuy nhiên, bạn có thể có các khai báo biến có kiểu trừu tượng. Xem ví dụ:

public abstract class MyClass { // allowed 
    public abstract myMethod(); // allowed 
    public MyClass instance; // allowed 

    public abstract MyClass instance; // NOT ALLOWED!! 
} 
+0

Tôi là người mới bắt đầu Java. Làm thế nào là điều này cho phép. >> phiên bản MyClass công khai; // được phép. Đó không phải là tạo ra một thể hiện của một lớp trừu tượng sao? – goldenmean

+2

@goldenmean Vẫn chưa được cải thiện. public MyClass instance = new MyClass() sẽ ném lỗi. (nếu MyClass là trừu tượng) –

7

Ngôn ngữ danh sách specifacation 7 loại biến:

  1. lớp biến - khai báo là tĩnh trong một khai báo lớp
  2. dụ biến - tuyên bố trong một khai báo lớp không sử dụng từ khóa tĩnh
  3. thành phần mảng - như i[2] khi chúng ta tạo ra một mảng như int[] i= new int[5]
  4. phương pháp thông số - Tên giá trị đối số truyền cho một phương pháp
  5. thông số constructor - giá trị tên đối số truyền cho một constructor
  6. ngoại lệ xử lý tham số - tạo ra mỗi thời gian một ngoại lệ bị bắt
  7. biến cục bộ - được khai báo trong một khối ({ }) hoặc cho tuyên bố

Bạn có thể sử dụng tất cả các loại biến (trừ # 4) trong một constructor:

class Demo { 
    static int demo1 = 0;    // class variable 
    int[] demo2 = new int[5];   // instance variable 
    Demo(int demo3) {     // constructor parameter 
    try { 
     int demo4 =      // local variable 
        demo2[2];   // array component 
    } catch(RuntimeException demo5) { // exception-handler parameter 
    } 
    demo2 = new int[]{Demo.demo1}; // using class and instance variable 
             // in a constructor 
    } 
    int method(int demo6) {    // method parameter 
    } 
} 

Từ khóa abstract không được phép cho khai báo biến.

0

Có 2 cách xác định các biến trừu tượng trong java mà không sử dụng từ khóa trừu tượng.

cách 1: Xác định một constructor tham số trong lớp trừu tượng, một cái gì đó như:

public abstract class TransactionManager { 
    private String separator; 

    public TransactionManager(String separator) { 
     this.separator = separator; 
    } 
} 

Khi xác định một constructor parametrized trong một lớp trừu tượng, các lớp con buộc phải xác định nhà xây dựng riêng của họ và gọi super constructor, do đó vượt qua SEPARATOR riêng của mình.

Cách 2: Xác định tài sản là phương thức getter, một cái gì đó như:

public abstract class TransactionManager { 
    public abstract String getSeparator(); 
} 

Bằng cách này, giá trị của SEPARATOR tài sản được giao cho được xác định bởi mỗi lớp bê tông.

Nguồn: Define an abstract property in java

0

trừu tượng là một modifier không truy cập trong java được áp dụng cho các lớp học, các phương pháp nhưng không biến.Nó được sử dụng để đạt được trừu tượng mà là một trong những trụ cột của lập trình hướng đối tượng.

+0

Bạn có điều gì đó mới mẻ trong câu trả lời không được đề cập trong các câu trả lời trước không? –

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