Die Sache ist, dass Sie nicht super Klassenvariablen in main
Methode zugreifen können. Weil es static
Methode ist. Wenn Sie auf main()
zugreifen möchten, müssen Sie Animal
Klasse name
Variable auf statisch machen. Dann können Sie einen Wert direkt in main()
eingeben.
So:
in Tierklasse,
static String name;
in VetOffice,
name = console.next();
Sie können verschiedene Arten versuchen, auf die Sache abhängig, die Sie Sie gehen erreichen müssen entscheiden,
Ist diese Variable kann als static
oder deklariert werden nicht? Weil static
Variablen für jedes Objekt gemeinsam sind.
Ein anderer Weg, dies zu tun ist,
erstellen Getter und Setter für Animal
Klasse Membervariablen. Dann können Sie auch nicht auf die main-Methode zugreifen, da Sie auch diese Methoden und Variablen auf statisch setzen müssen.
Als Lösung ohne sie statisch oder ein neuer Methoden auch Getter und Setter in Superklasse makinng Sie Standardkonstruktors für Superklasse erstellen und Werte zuweisen wie unten:
Wenn Ihre Variable in der Superklasse private
Sie ist müssen Getter und Setter erstellen.
public static void main(String[] args) {
Scanner console = new Scanner(System.in);
System.out.print("Please enter name of pet");
VetOffice pet = new VetOffice();
pet.name = console.next();
System.out.println(pet.name);
}
Hinweis: Standardkonstruktors erstellen Wenn es nicht notwendig Objekt aus VetOffice
oder Superklasse seeing zu erstellen, die Sie Wert Konstruktor übergeben müssen.
UPDATE:
nach Ihren Kommentar
Wenn Ihre Variable in der Superklasse private
dies tun:
public static void main(String[] args) {
Scanner console = new Scanner(System.in);
System.out.print("Please enter name of pet");
VetOffice pet = new VetOffice();
pet.setName(console.next());
System.out.println(pet.getName());
}
Ein anderer Weg, die Sie im Kommentar gefragt:
Tierklasse (teilweise implementiert, um Ihnen zu zeigen)
public class Animal {
int lifeExpectancy;
static int weight;
static String name;
Animal(int lifeExpectancy, int weight, String name, Character gender, String type){
this.weight = weight;
this.name = name;
}
public static String getName() {
return name;
}
public static void setName(String n) {
name = n;
}
}
dann im Hauptverfahren:
Animal.setName(console.next());
System.out.println(Animal.getName());
kann es hilfreich sein, wenn Sie die 'Tier: ein Tier Super-Klasse gemeinsam nutzen können. –
'VetOffice' ** erbt ** die Eigenschaft (Felder und Methoden) seiner Oberklasse' Tier'. Also, wenn es 'Getter' &' Setter' Methoden in der Oberklasse gibt, können Sie sie in der Unterklasse verwenden. – Yahya
'VetOffice' erweitert' Animal' ??? Das ist eine rote Flagge genau dort ... –