2011-05-02 13 views
34

Che cos'è una "sottoclasse" in java?Che cos'è una sottoclasse

Conosco classi e metodi, ma non conosco le sottoclassi.

+1

... che cos'è Methos? – Mehrdad

+1

mente penso? ... –

+7

questo è davvero il sito in cui spieghiamo cos'è la sottoclasse e l'ereditarietà? Veramente? –

risposta

72

Una sottoclasse è una classe che estende un'altra classe.

public class BaseClass{ 
    public String getFoo(){ 
     return "foo"; 
    } 
} 

public class SubClass extends BaseClass{ 
} 

Poi ...

System.out.println(new SubClass().getFoo()); 

stamperà:

foo 

Questo funziona perché una sottoclasse eredita la funzionalità della classe si estende.

+2

Questo che si chiama ereditarietà in Java? –

+8

+1 Per una spiegazione semplice a cui tutti possono fare riferimento. – rzetterberg

2

Una sottoclasse in java, è una classe che eredita da un'altra classe.

L'ereditarietà è un modo per le classi di aggiungere un comportamento specializzato ontop di comportamento generalizzato. Questo è spesso rappresentato dalla frase "è una" relazione.

Ad esempio, un Triangle è un Shape, quindi potrebbe avere senso implementare una classe di forma e avere ereditato dalla classe Triangle. In questo esempio, è Shape superclasse di Triangle e Triangle è la sottoclasse di Shape

2

Se si hanno le seguenti:

public class A 
{ 
} 

public class B extends A 
{ 
} 

poi B è una sottoclasse di A, B eredita da A. Il contrario sarebbe la superclasse.

+0

La classe pubblica B: A significa che la classe pubblica B estende A ?? –

+0

sì, esattamente. Mi adeguerò. – Femaref

3

La sottoclasse è di classe come Java è per Linguaggio di programmazione.

3

È una classe che estende un'altra classe.

esempio preso dalla http://www.java-tips.org/java-se-tips/java.lang/what-is-a-java-subclass.html, Cat è una classe secondaria di Animal :-)

public class Animal { 

    public static void hide() { 
     System.out.println("The hide method in Animal."); 
    } 

    public void override() { 
     System.out.println("The override method in Animal."); 
    } 
} 

public class Cat extends Animal { 

    public static void hide() { 
     System.out.println("The hide method in Cat."); 
    } 

    public void override() { 
     System.out.println("The override method in Cat."); 
    } 

    public static void main(String[] args) { 
     Cat myCat = new Cat(); 
     Animal myAnimal = (Animal)myCat; 
     myAnimal.hide(); 
     myAnimal.override(); 
    } 
} 
9

Una sottoclasse è qualcosa che estende la funzionalità della classe esistente. Cioè

Superclass - descrive la catagory di oggetti:

public abstract class Fruit { 

    public abstract Color color; 

} 

Subclass1 - descrive gli attributi dei singoli oggetti di frutta:

public class Apple extends Fruit { 

    Color color = red; 

} 

Subclass2 - descrive gli attributi dei singoli oggetti di frutta:

public class Banana extends Fruit { 

    Color color = yellow; 

} 

La parola chiave "abstract" nella superclasse significa che la classe definirà solo le informazioni obbligatorie che ciascuna sottoclasse deve avere, ad esempio un pezzo di frutta deve avere un colore, quindi è definito nella super classe e tutte le sottoclassi devono "ereditare" quell'attributo e definire il valore che descrive l'oggetto specifico.

Ha senso?

+0

Mela rossa? Haha –

2

Pensa a una classe come descrizione dei membri di un insieme di cose. Tutti i membri di quel set hanno caratteristiche comuni (metodi e proprietà).

Una sottoclasse è una classe che descrive i membri di un particolare sottoinsieme del set originale. Condividono molte delle caratteristiche della classe principale, ma possono avere proprietà o metodi che sono unici per i membri della sottoclasse.

Si dichiara che una classe è sottoclasse di un'altra tramite la parola chiave "extends" in Java.

public class B extends A 
{ 
... 
} 

B è una sottoclasse di A. Le istanze della classe B esporrà automaticamente molte delle stesse proprietà come istanze della classe A.

Questo è il concetto principale della eredità nella programmazione orientata agli oggetti .

+0

Quindi una classe astratta deve contenere almeno 1 informazione obbligatoria che deve avere ciascuna sottoclasse? compresi i metodi? MA può anche contenere le proprie informazioni e metodi che non sono obbligato a usare (ma sono ancora un'opzione)? –

+0

Non penso che le classi astratte debbano avere proprietà in particolare. A volte solo il fatto che una classe erediti da una classe astratta è tutto ciò che vuoi. (vedi "polimorfismo") – bpanulla

0

Una sottoclasse è un file piccolo di un programma che si estende da qualche altra classe. Ad esempio, fai un corso sulle macchine in generale e hai informazioni di base valide per tutte le auto con i tuoi costruttori e roba, quindi hai una classe che si estende da quella su una macchina o una linea di automobili più specifiche che avrebbero nuove variabili/metodi . Vedo che hai già un sacco di esempi di codice da quando ho postato questo post, ma spero che questa descrizione sia d'aiuto.

+0

Tuttavia non deve necessariamente essere un proprio file. –

Problemi correlati