[ Pobierz całość w formacie PDF ]
.String[] names = { "Isa", "Eva", "Jan" };System.out.println(names.length); // 3int[][] values = { { 10 }, { 20, 30, 40 } };System.out.println(values.length); // 2System.out.println(values[1].length); // 3Deklaracja obiektu i tablicy jest deklaracj¹ odnoœnika, w którym przechowujesiê odniesienia do obiektów albo do tablic.Odnoœnikom nie-interfejsowym typuType mo¿na przypisywaæ odniesienia do obiektów klasy Type oraz odniesienia doobiektów dowolnej jej klasy pochodnej, a odnoœnikom interfejsowym typu Typemo¿na przypisywaæ odniesienia do obiektów dowolnych klas implementuj¹cychinterfejs Type.W szczególnoœciPanel panel;jest deklaracj¹ odnoœnika typu Panel, któremu mo¿na przypisywaæ m.in.odniesienia do obiektów klasy Panel oraz Applet, aSerializable serial;jest deklaracj¹ interfejsowego odnoœnika typu Serializable, któremu mo¿naprzypisywaæ m.in.odniesienia do obiektów klas Color i Cursor (poniewa¿implementuj¹ interfejs Serializable).W zasiêgu nastêpuj¹cych deklaracjiclass String {private char value[];private int offset, count;//.}class Child {private String name;private int age;//.}ka¿dy obiekt klasy String sk³ada siê z odnoœnika do tablicy o elementachpodstawowych typu char oraz z 2 zmiennych typu int, a ka¿dy obiekt klasy Childsk³ada siê z odnoœnika typu String do obiektów klasy String oraz ze zmiennejtypu int.Elementami podstawowymi obiektu klasy Child s¹: odnoœnik typu char[] oraz 3(sic!) zmienne typu int.Fabrykowanie obiektówZadeklarowanie odnoœnika nie powoduje utworzenia obiektu.W celu utworzeniaobiektu nale¿y u¿yæ fabrykatoranew TypObiektowy(Arg, Arg,., Arg)Jego rezultatem jest odnoœnik zainicjowany odniesieniem do w³aœniesfabrykowanej zmiennej.public void paint(Graphics gDC){Point point; // deklaracja odnoœnikapoint = new Point(10, 20); // przypisanie odniesieniagDC.drawLine(0, 0, point.x, point.y);}Zmienne lokalneZakresem i jednoczeœnie zasiêgiem deklaracji zmiennej lokalnej (w tymparametru) sk³adowej jest ca³y blok w którym wyst¹pi³a deklaracja, alezasiêgiem deklaracji zmiennych steruj¹cych instrukcji for jest tylko cia³o tejinstrukcji.void Sub(int x, int y){for(int i = 0; false ; );for(int i = 1; false ; ); // dobrze (w ANSI C++ b³¹d!)int v = i; // b³¹d (nieznany inicjator)int j = 2;for(int j = 2; false ; ); // b³¹d (ponowna deklaracja)int y; // b³¹d (ponowna deklaracja)int z = 10;int v = 20;{int v = 30; // b³¹d (ponowna deklaracja)int u = 40;}{int u = 50; // dobrze!int z = 60; // b³¹d (ponowna deklaracja)}}Odnoœnik thisW ciele konstruktora i metody jest dostêpny odnoœnik this identyfikuj¹cy obiektna rzecz którego wywo³ano ten konstruktor albo tê metodê.Cia³o konstruktora rozpoczyna instrukcjathis(Arg, Arg,., Arg);albo (jawna albo domniemana) instrukcjasuper(Arg, Arg,., Arg);W pierwszej jest wywo³ywany konstruktor danej klasy, a w drugiej konstruktorjej klasy bazowej.Jeœli w ciele konstruktora nie wyst¹pi ¿adna z tych instrukcji, to domniemywasiê, ¿e jego pierwsz¹ instrukcj¹ jestsuper();PolimorfizmKa¿da metoda jest domyœlnie wirtualna.Ka¿de wywo³anie metody, która nie jestprywatna albo finalna jest polimorficzne, a wiêcNiezale¿nie od typu odnoœnika, wywo³uje siê metodê nale¿¹c¹ do klasy tegoobiektu, którego odniesienie jest przypisane odnoœnikowi na rzecz któregoodbywa siê wywo³anie.Podczas kompilowania programu typ odnoœnika s³u¿y tylko do upewnienia siê, ¿e wklasie albo w interfejsie definiuj¹cym ten typ wystêpuje deklaracja wywo³ywanejmetody.Podczas wykonywania programu typ odnoœnika nie jest ju¿ brany poduwagê.Uwaga: Wywo³anie zrealizowane za pomoc¹ s³owa kluczowego super (np.super.fun(3)) nie jest polimorficzne.Nastêpuj¹cy aplet zawiera polimorficzne wywo³ania metod getAge i getId.===============================================import java.applet.Applet;import java.awt.Graphics;abstractclass Person {abstract int getAge();}interface Citizen {String getId();}class Mother extends Person {private int age;public Mother(int age){this.age = age;}int getAge(){return age;}}class Father implements Citizen {private String id;public Father(String id){this
[ Pobierz całość w formacie PDF ]