Προς το περιεχόμενο

Java, Μια ερωτηση.


flo1

Προτεινόμενες αναρτήσεις

Δημοσ.

>public class Test{
int i=j;
static int j=21;
Test(){};
Test(int i,int j){this.i=i; this.j=j;};
public static void main(String[] args)
{
Test   t1= new  Test();
Test   t2=new    Test(4,5);
System.out.println("i=  "+t1.i  +"  j=  "+ t1.j);
System.out.println("i=  "+t2.i  +" j=  " + t2.j);
}
}

 

ΕΡΩΤΗΣΗ : Τι τυπωνεται ?

ΑΠΑΝΤΗΣΗ :

i=21 j=5

i=4 j=5

H AΠΟΡΙΑ ΜΟΥ : γιατι ? B)

Δημοσ.

Όταν δημιουργείς το t1 έχεις:

t1.i = 21

t1.j = 21

Όταν δημιουργείς το t2 έχεις:

t2.i = 4

t2.j = 5

Αλλά επειδή το j είναι static, κάθε αντικείμενο κλάσης Test αναφέρεται στην ίδια j. Άρα, με τη δημιουργία του t2 κάνεις ταυτόχρονα και:

t1.j = (t2.j = ) 5

Δημοσ.
Τι εννοεις ?

 

Εννοεί πως οι static ιδιότητες δεν είναι ιδιότητες του αντικειμένου, αλλά της κλάσης.

 

Δηλαδή, αν για παράδειγμα έχεις

>public class SampleClass
{
 public static int prop = 15;
}

μπορείς να αναφερθείς στην ιδιότητα με SampleClass.prop χωρίς να έχεις δημιουργήσει κάποιο αντικείμενο αυτής της κλάσης.

Δημοσ.
Βλεπεις το j με το this? :shock:

 

Ναι, υπάρχει δυνατότητα να το κάνει, απλά θα του το βγάλει σαν warning:

 

The static field Test.j should be accessed in a static way

 

Προφανώς, καλύτερα να το χρησιμοποιήσει σαν σκέτο j, όπως αναφέρθηκε παραπάνω.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...