- Zmienne lokalne : final
- Zmienne ( nie lokalne) : final, public, protected, private ,static, transient volatile
- Metody: final, public, protected, private ,static, abstract, synchronized, strictpf, native
- Klasa: hm... public, default, strictfp, abstract...( dodać)
27 lut 2010
Porównanie modyfikatorów
Zmienne instancji
- Można wykorzystać 4 aces modifiers
- Może być final
- Może być transient
- Nie może być: synchronized,abstract, native, strictfp,
- Nie może być static, bo wtedy staje sie zmienną klasy
char- przytowanie
public void absMethod() {
char c =65000; // dodatnie 0-65535
short s = 6500;
c=s; //zonk : possible lost , chodzi o ujemne!
s=c; //jak wyżej
byte b=0;
s=b; //ok
c=b; //possible lost a presicion bo ujemne!!
}
Kwestia ustraty znaku!, Char ma tylko dodatnie!
Spis ważnych
- Dostępność memberów -SCJP book , page 39
- Gdy metoda w base throw Exception - SCJHP book,page 108
- hashcode a equals , SCJP book, page 554
Podstawy cz.2
- Do protected nie odnosimy się przez .
- Dla klas w innych pakietach do protected członków można dostać się tylko
przez dziedziczenie - Do protected member dostaniemy się z klasy z tego samoego pakietu!!!
- Zmienne lokalne są bez modyfikatorów dostępu
- W zmiennych lokalnych można uzywać final
- Protected= package + subclass throught inheritance
- Klasa nie bastrakcyjna z choć 1 metodą abstract jest illegal!!
- Klasa abstrakcyjna nie musi mieć abstrakcyjnych metod!.
- Pierwsza nie abstrakcyjna klasa musi implementować wszystkie metody abstrakcyjne z superclass.
- static + abstract method are illegal!
- Oznaczenie synchronized stodujemy tylko do metod i bloków kodu!
- Native tylko dla metod! ( deklaracja jak metody anstrakcyjne)
- strictfp tylko dla klas i metod ( nie dla zmiennych!!!! )
- Varargs: void method(int... x) {}
- Varargs musi być ostatnim marametrem!
- Varargs=> 0 lub wiele
- Jeżeli przed konstruktorem damy void to jest traktowany jako metoda.
- Konstruktor nie może być ani final ani static ani abstract!
- Ile zajmuje boolean to zależy od sprzętu!.
- Char i short zajmują 16 bitów.
- Klasy abstrakcyjne mogą implemntować interfejsy!
- Metod ,które są w interfejsie nie trzeba zapisywać w klasie abstrakcuyjnej, dopiero w pierwszej klasie konkretnej!!!
- volatile tylko do zmiennych!
- Jeżeli klasa nie jest public to nazwa nie musi pasować do nazwy pliku!!!
- Metoda private nie może być overriden!!
- throws jest dozwolone po sygnaturze metody abstrakcyjnej!!
- może być synchronized łączone z final i modyfikatorami dostępu.
- Klasa abstrakcyjna może rozszerzać klasę konkretną!!
25 lut 2010
Protected access
public class Parent {
protected int i=14;
}
public class Child extends Parent {
@Test
public void testProtectedAcess(){
prn(i); // z superClass => OK działa
Parent parent = new Parent();
//zadziałała jak 2 klasy sa w tym samym pakiecie!
prn(parent.i);
}
}
- Trzeba się bacznie przypatrzeć!!
TODO
- Przysłanianie metod, które są prywatne w klasie bazowej
- Kiedy obiekty są dostępne dla GC! {scope ,wyjście z metod, różne!!!}
Subskrybuj:
Posty (Atom)