В том, что вы написали, нет никакого смысла (даже если это и компилируется)! Если я правильно понял смысл затеи, что из написанного ОЧЕНЬ непросто, то должно быть как-то так:
public abstract class Pet {
String name;
int age;
int weight;
int cost;
}
...
public class Dog extends Pet {
public Dog(String name, int age){
this.name = name;
this.age = age;
}
}
...
public class Main {
public static void main(String[] args) {
Pet tuzik = new Dog("Tuzik", 5);
System.out.print(tuzik.age);
}
}
Это наиболее близко к написанному и будет работать, как хочется, но это все еще УЖАСНО с т.з. ООП, так что рассматривайте это только как иллюстрацию, а не как пример к подражанию.
Обратите внимание на "
public Dog(String name, int age){...
" - это конструктор. У него нет типа. Он вызывается, когда класс инстанциируют (
... = new Dog("Tuzik", 5);
) и возвращает экземпляр класса (объект). Только после этого поля объекта проинициализированны какими-то значениями. До того в них в данном примере ничего нет (точнее, там сразу после создания объекта и до отработки его конструктора везде 0 и null в name).
Если что-то непонятно, спрашивайте, но учтите, что пока вы не разберетесь с этим, продолжать обсуждать подробности (например, почему класс Pet абстрактный) бессмысленно.