View Full Version : [JAVA]Classi statiche
Ragazzi fino ad adesso ho scritto tutto il mio codice senza mai utilizzarle, forse probabilmente perchè non ho nemmeno capito il loro scopo e la loro utilità
Qualcuno mi potrebbe chiarire le idee sulla loro funziona e in che genere di problemi vengono utilizzate, perchè magari ho avuto a che fare con problemi che sarebbero stati facile da risolvere utilizzando le classi astratte ma che però ho risolto in modo infelice per vie traverse.
Nel libro che ho non vengono spiegate molto bene.
franksisca
17-07-2006, 16:16
classi statiche o classi astratte???
per le classi astratte, tratto da wikipediaIn informatica si definisce classe astratta una classe che viene progettata soltanto per svolgere la funzione di classe base (chiamata a volte anche classe genitrice) e da cui le classi derivate (chiamate anche classi figlie) possono ereditare, ma che, da sola, non può essere istanziata. le classi astratte sono usate anche per rappresentare concetti ed entità astratte. Le caratteristiche "incomplete" della classe astratta vengono condivise da un gruppo di sotto-classi figlie, che vi aggiungono caratteristiche diverse, in modo da colmare le "lacune" della classe base astratta.
Le classi astratte possono essere considerate come super-classi che contengono metodi astratti, progettate in modo che le sotto-classi che ereditano da esse ne "estenderanno" le funzionalità implementandone i metodi. Il comportamento definito da queste classi è "generico" e la maggior parte dei costrutti della classe sono indefiniti e non implementati. Prima che una classe derivata da una classe astratta possa essere istanziata essa ne deve implementare tutti i metodi astratti.
Riassumendo: quando definisce una classe astratta il programmatore deve tener presente che si tratta di una classe composta da elementi che devono essere implementati successivamente mediante l'ereditarietà. Questo processo di astrazione ha lo scopo di creare una struttura base che semplifica il processo di sviluppo del software.
Al contrario, invece, una classe concreta è una classe su cui possono essere create ("istanziate") entità chiamate "oggetti".
La maggior parte dei linguaggi di programmazione orientati agli oggetti consente al programmatore di specificare, con apposite parole chiave, quali classi sono astratte, impedendo in modo automatico che su di esse vengano istanziati oggetti (ad esempio Java usa la keyword abstract). Con questi accorgimenti il programmatore può concentrarsi sull'analisi e lo sviluppo del programma: l'implementazione effettiva delle funzionalità necessarie viene fatta nelle classi derivate che ereditano da quella astratta.
se hai altri problemi o dubbi, siamo qui.
Scusami intendevo le classi statiche, delle astratte penso di averne fatto buon uso :p penso...
The3DProgrammer
17-07-2006, 17:27
Member. Member classes are defined within the body of a class. You can use member classes anywhere within the body of the containing class. You declare member classes when you want to use variables and methods of the containing class without explicit delegation.
The member class is the only class that you can declare static. When you declare a member class, you can instantiate that member class only within the context of an object of the outer class in which this member class is declared. If you want to remove this restriction, you declare the member class a static class.
When you declare a member class with a static modifier, it becomes a nested top-level class and can be used as a normal top-level class as explained above.
praticamente, quando dichiari una classe membro non statica, per ottenere un'istanza dovresti fare:
TopLevelClass tlc=new TopLevelClass();
TopLevelClass.NestedClass nc=tlc.new NestedClass();
mentre per le classi nested statiche non hai bisogno di un'istanza di TopLevelClass che la racchiuda:
TopLevelClass.NestedClass nc=new TopLevelClass.NestedClass();
more info:
http://www.javaworld.com/javaworld/javaqa/1999-08/01-qa-static2.html
ciauz
franksisca
17-07-2006, 17:30
guarda che ho trovato..... :rolleyes: :rolleyes: :rolleyes:
http://www.hwupgrade.it/forum/archive/index.php/t-686133.html
e ricorda....http://img269.imageshack.us/img269/8702/forumbp7.th.gif (http://img269.imageshack.us/my.php?image=forumbp7.gif)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.