flo1 Δημοσ. 11 Μαΐου 2009 Δημοσ. 11 Μαΐου 2009 >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ΠΟΡΙΑ ΜΟΥ : γιατι ?
teo64x Δημοσ. 11 Μαΐου 2009 Δημοσ. 11 Μαΐου 2009 Όταν δημιουργείς το t1 έχεις: t1.i = 21 t1.j = 21 Όταν δημιουργείς το t2 έχεις: t2.i = 4 t2.j = 5 Αλλά επειδή το j είναι static, κάθε αντικείμενο κλάσης Test αναφέρεται στην ίδια j. Άρα, με τη δημιουργία του t2 κάνεις ταυτόχρονα και: t1.j = (t2.j = ) 5
teo64x Δημοσ. 12 Μαΐου 2009 Δημοσ. 12 Μαΐου 2009 Τι εννοεις ? Εννοεί πως οι static ιδιότητες δεν είναι ιδιότητες του αντικειμένου, αλλά της κλάσης. Δηλαδή, αν για παράδειγμα έχεις >public class SampleClass { public static int prop = 15; } μπορείς να αναφερθείς στην ιδιότητα με SampleClass.prop χωρίς να έχεις δημιουργήσει κάποιο αντικείμενο αυτής της κλάσης.
ilias_t Δημοσ. 15 Μαΐου 2009 Δημοσ. 15 Μαΐου 2009 Βλεπεις το j με το this? Ναι, υπάρχει δυνατότητα να το κάνει, απλά θα του το βγάλει σαν warning: The static field Test.j should be accessed in a static way Προφανώς, καλύτερα να το χρησιμοποιήσει σαν σκέτο j, όπως αναφέρθηκε παραπάνω.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.