У меня есть следующая программа:статическая переменная декларация суперкласс - Java
class Vehicle{
static int speed=50;
Vehicle(){
this.speed=speed;
}
}
class Bike4 extends Vehicle{
int speed=100;
void display(){
System.out.println(Vehicle.speed);//will print speed of Vehicle now
}
public static void main(String args[]){
Bike4 b=new Bike4();
b.display();
}
}
Предположив Я не хочу использовать ключевое слово «супер» и я просто вызвать функцию «Vehicle.speed» почему я нужно изменить тип переменной скорости в суперклассе на статический? Что произойдет, если я запустил программу без использования статического ключевого слова? (опять же, предположим, что он компилируется)
Почему вы ставите эту переменную статическую в первую очередь? –
Что вы подразумеваете под «просто называть функцию Vehicle.speed»? Это поле, а не функция. И 'static' не является * типом *, это модификатор ... –
Я думаю, вам следует рассмотреть примечания к классу (статические) и экземпляры (нестатические) поля. 'Vehicle.speed', как вы написали, это не скорость данного автомобиля. Это скорость всех автомобилей, что не имеет смысла. – RealSkeptic