Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему не статичный метод работает в статичном java, написал сам, но не понял логики статики и не статики)

Denis Ученик (38), на голосовании 3 месяца назад
 import java.util.Scanner; 

public class Main extends TankHealth{

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);
System.out.println("Введите статус: старт или стоп");

String status = scan.nextLine();

if(status.equals("старт")) {
System.out.println("Статус: старт, какая скорость?");
boolean start = true;
boolean soundride = true;
TankHealth health = new TankHealth();
System.out.println(health.method(scan.nextInt(), "едет\n"));

}
if(status.equals("стоп")) {
System.out.println("Статус: стоим");
boolean start = false;
boolean soundride = false;
}


}
}
вот здесь вызов из другого класса не статичного метода




 System.out.println(health.method(scan.nextInt(), "едет\n"));  
сам другой класс вот, на лишние переменные не обращать внимание))




 public class TankHealth { 

private static int health = 100;
private static int armor = 100;
private static int tankstatusspeed = 0;
private static int tankmaxspeed = 200;
private static int tankminspeed = 10;
private static boolean stop;
private static String ride;
private static boolean ridesound;
private static boolean whole;
private static boolean broken;

void Simple() {
if (tankstatusspeed > 0 && tankstatusspeed <= tankmaxspeed && tankstatusspeed >= tankminspeed ) {
ride = "start";
stop = false;
ridesound = true;
}
if (tankstatusspeed > 0 && tankstatusspeed <= tankmaxspeed && tankstatusspeed < tankminspeed ) {
ride = "start";
stop = false;
ridesound = false;

}

}
void method(int tankstatusspeed, int tankmaxspeed, int tankminspeed, String ride, boolean stop, boolean ridesound) {
this.tankstatusspeed = tankstatusspeed;
this.tankmaxspeed = tankmaxspeed;
this.tankminspeed= tankminspeed;
this.ride = ride;
this.stop = stop;
this.ridesound = ridesound;
}
void method(int tankstatusspeed, String ride, boolean ridesound) {
this.tankstatusspeed = tankstatusspeed;
this.ride = ride;
this.ridesound = ridesound;
}
String method(int tankstatusspeed, String ride) {
this.tankstatusspeed = tankstatusspeed;
this.ride = ride;
return ride + tankstatusspeed;
}
}
Голосование за лучший ответ
Оракул Оракул (61537) 4 месяца назад
Потому что вызываете из объекта health
Александр Искусственный Интеллект (294941) 4 месяца назад
к статическим методам и переменным класса обращаются статически...
не важно откуда...
Neon mode Гуру (3085) 4 месяца назад
Статичный, он и статичный, что его можно вызывать без создания экземпляра класса. В данном случае, ты вызвал не статический метод через созданный ранее экземпляр класса. Чтобы вызвать статичный метод, нужно перед точкой, вместо объекта написать класс:
 TankHealth.method(...) 
Похожие вопросы