Conceptos
Clase: Debemos pensar en una clase como en un molde donde definimos las características (propiedades y métodos) de los objetos que creemos a partir de ella.
Objeto: Un objeto es una instancia de una clase, pueden haber muchos objetos de una misma clase. La clase (al menos en principio) solo define a los objetos, serán estos los que "trabajen".
Propiedad: No son más que datos o variables declarados dentro de una clase. Todos los objetos de una clase tendrán las propiedades que en ella hallamos definido, pudiendo por supuesto tener valores diferentes en cada objeto.
Método: Un método es sencillamente una función definida dentro de una clase.
Public: Un método (o propiedad) público (public) es aquel al que podemos acceder desde fuera del ámbito en el que ha sido declarado. Por tanto, para poder llamar a un método de una clase desde fuera de esa clase, el método debe estar declarado como public.
Static: Declarar un metodo (o propiedad) como static, nos permite acceder a el aunque no hayamos creado ningun objeto, es decir, podríamos "llamarlo" directamente desde la clase. Podríamos pensar en estos como en funciones o variables normales, independientes de los objetos.
Ejemplo: Al ejecutar métodos de la clase Math, lo hacemos desde la clase Math.pow(), en ningun momento creamos un objeto de esta clase. Esto es posible por que los métodos (como Math.pow()) y las propiedades constantes (como Math.PI) estan declaradas como static.
Math.pow()/span