Пожалуйста, извините мой вопрос, поскольку я попытался найти разницу между использованием супер ключевого слова vs class name, чтобы вызвать метод из суперкласса, но мне не удается найти ответ. Мой вопрос я пытаюсь узнать Java в качестве учебного курса и я использую пример из ссылки: http://www.javatpoint.com/super-keyword используя Пример # 3 и здесь есть код, который я написал:Разница между супер ключевым словом vs имя класса для вызова метода из суперкласса
Я создал супер класс под названием Транспортное средство
public class Vehicle {
Vehicle() {
System.out.println("Vehicle constructor created");
}
public void speed() {
int a = 20;
System.out.println(a);
}
}
, а затем создал класс суб имени велосипед со следующим кодом:
public class Bike extends Vehicle {
int speed;
Bike(int speed1) {
this.speed = speed1;
System.out.println(speed1);
super.speed();
}
public static void main(String args[]) {
Bike b = new Bike(10);
}
}
в классе к югу под велосипед конструктора Я использую super.speed() для вызова метода скорости от супер (Vehicle) класс. Теперь, если я изменю эту строку на Vehicle.speed(), я получаю сообщение о том, что мне нужно сделать мой метод скорости статичным.
Я не хочу, чтобы мой метод был статическим и хотел знать о различии между ними.
Приветствия,
Я думаю, причина в том, что если вы используете имя класса.method, это метод доступа статическим способом. Но я не уверен на 100%. Так что просто комментарий :) –
Если вы измените его на this.speed(), он должен работать IMHO :) – Supahupe