Qual é a diferença entre estruturas C e classes Java?

Eu sou novato em Java, mas um pouco familiar a C. Eu queria saber - que diferenças existem entre estruturas C e objetos Java e invocar seus métodos? Ou são totalmente equivalentes?

Por exemplo, a estrutura da bicicleta:

class BicycleDemo {
     public static void main(String[] args) {

          // Create two different Bicycle objects
          Bicycle bike1 = new Bicycle();
          Bicycle bike2 = new Bicycle();

          // Invoke methods on those objects
          bike1.changeCadence(50);
          bike1.speedUp(10);
          bike1.changeGear(2);
          bike1.printStates();

          bike2.changeCadence(50);
          bike2.speedUp(10);
          bike2.changeGear(2);
          bike2.changeCadence(40);
          bike2.speedUp(10);
          bike2.changeGear(3);
          bike2.printStates();
     }
}

A razão pela qual estou perguntando é porque eles são tão parecidos! Obrigado

questionAnswers(4)

yourAnswerToTheQuestion