Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    106

    [JAVA] differenze classe ASTATTA & INTERFAC

    Ciao ragazzi...scusatemi ma in questi giorni ho postato un po di problemi che ho avuto ma domani ho l'esame e mi stanno venendo mille dubbi.
    Adesso stavo guardando un esercizio con una classe astratta (e a sto punto volevo chiedere qualcosa sull 'interfaccia).

    classe ASTRATTA:
    Una classe astratta è una classe a tutti gli effetti però il costruttore non puo' essere chiamato direttamente.
    Se una classe ha un metodo astratto allora sicuramente anche la classe è astratta!!. Fin qua tutto ok.
    Poi ho notato (provando) che una classe astratta puo' non avere metodi astratti.
    Può avere dei metodi a loro volta astratti ma anche normali...DUBBI:
    1 - i metodi astratti devono essere dichiarati nella classe stessa ma implementati per forza nelle sottoclassi?? o posso già implementarli nella classe astratta??
    es
    public abstract class Pippo
    //costruttori
    //metodi
    public abstract int Valore(); <----cosi sicuramente giusto

    public abstract int Valore(){ <----posso farlo??
    return .....;
    }

    2 - in una classe astratta posso mettere anche un metodo non abstract

    INTERFACCIA
    Si può scrivere il costruttore??...oppure non si mette mai??
    in piu l'unica cosa che posso fare è scrivere dei metodi che però non possono essere ASSOLUTAMENTE implementati nella classe stessa perchè l'implementazione è rimandata alle sue sotto classi....l'importate che una classe che implementa un interfaccia ridefinbisca il metodo dell'interfaccia...tutto qui giusto??

    Ho letto un po di cose su internet ma continuo ad avere questi dubbi...grazie in anticipo...ciao

  2. #2
    Utente di HTML.it L'avatar di progAnd
    Registrato dal
    Jan 2012
    Messaggi
    119
    classe ASTRATTA:
    1 - i metodi astratti devono essere dichiarati nella classe stessa ma implementati per forza nelle sottoclassi?? o posso già implementarli nella classe astratta??
    es
    public abstract class Pippo
    //costruttori
    //metodi
    public abstract int Valore(); <----cosi sicuramente giusto

    public abstract int Valore(){ <----posso farlo??
    return .....;
    }
    No. I metodi astratti devono essere implementati dalle sottoclassi
    2 - in una classe astratta posso mettere anche un metodo non abstract
    Sì. Una classe astratta fornisce un'implementazione comune alle sottoclassi, ma non si vuole che essa stessa sia istanziata. Una classe astratta può (non deve) fornire metodi astratti che verranno implementati dalle sottoclassi.
    INTERFACCIA
    Si può scrivere il costruttore??...oppure non si mette mai??
    Mai. Un'interfaccia non è una classe, ma è una "specie" di indicatore che dice che "una classe che implementa tale interfaccia, può rispondere ai metodi qui descritti".
    in piu l'unica cosa che posso fare è scrivere dei metodi che però non possono essere ASSOLUTAMENTE implementati nella classe stessa perchè l'implementazione è rimandata alle sue sotto classi....l'importate che una classe che implementa un interfaccia ridefinbisca il metodo dell'interfaccia...tutto qui giusto??
    Giusto. Java ti permette anche di definire delle costanti nell'interfaccia (in realtà anche altre cose, ma non complichiamoci troppo la vita).

    Ciao
    PS: per una trattazione generica sulla programmazione ad oggetti (se sei interessato), ti rimando qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    106
    Grazie mille....sei stato gentilissimo..e grazie anche per il link

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    106
    a un ultima cosa....tutti i metodi abstract definiti nella classe abstract devo essere istanziati PER FORZA nelle sottoclassi giusto?...es ho 3 metodi abstract in una classe astratta...tutti le sotto classi di essa devono definire i 3 metodi giusto??...e se ne definisco solo 2 cosa succede??

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613
    Originariamente inviato da albymotard
    a un ultima cosa....tutti i metodi abstract definiti nella classe abstract devo essere istanziati PER FORZA nelle sottoclassi giusto?...es ho 3 metodi abstract in una classe astratta...tutti le sotto classi di essa devono definire i 3 metodi giusto??...e se ne definisco solo 2 cosa succede??
    Gli oggetti si istanziano, i metodi astratti si implementano.
    Se una classe estende una classe astratta può implementare tutti i suoi metodi e può quindi non essere dichiarata anch'essa astratta (ma non è obbligatorio); se la sotto-classe non implementa tutti i metodi astratti fornisce un'implementazione parziale, ovvero implementa alcuni metodi lasciandone altri astratti (ovviamente anche la sotto-classe in questo caso dev'essere dichiarata astratta).

    E' tutto spiegato nei tutorial ufficiali per Java della Oracle: http://docs.oracle.com/javase/tutori.../abstract.html

  6. #6
    Utente di HTML.it L'avatar di progAnd
    Registrato dal
    Jan 2012
    Messaggi
    119
    Originariamente inviato da albymotard
    a un ultima cosa....tutti i metodi abstract definiti nella classe abstract devo essere istanziati PER FORZA nelle sottoclassi giusto?
    giusto (ma vedi sotto)
    ...es ho 3 metodi abstract in una classe astratta...tutti le sotto classi di essa devono definire i 3 metodi giusto??...e se ne definisco solo 2 cosa succede??
    Devono essere abstract

    Ciao

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    106
    ok es.
    abstract class GraphicObject {
    int x, y;
    ...
    void moveTo(int newX, int newY) {
    ...
    }
    abstract void draw();
    abstract void resize();
    }

    class Circle extends GraphicObject {
    void draw() {
    ...
    }
    void resize() {
    ...
    }
    }

    class Rectangle extends GraphicObject {
    void draw() { <-- qui non implemento void resize()
    ...
    }

    }

    Cosa succede?? non riesco a capire questo..magari con l'esempio capisco meglio..scusate ma sono un ritardato

  8. #8
    Utente di HTML.it L'avatar di progAnd
    Registrato dal
    Jan 2012
    Messaggi
    119
    Ti dà errore il compilatore

    Ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.