Java中的一个关键概念是实例化的想法。类定义具有针对一种对象的所有规则。对象的每个实例将遵循相同的规则。例如,如果我定义
class Ball { public void bounce() { // lots of pre here }}然后系统具有称为
Balls的代码,可以
bounce
如果我要两个球…
public class Main { public static void main(String args[]) { Ball beachBall = new Ball(); Ball soccerBall = new Ball();然后我就可以弹跳它们
beachBall.bounce(); beachBall.bounce(); soccerBall.bounce(); beachBall.bounce();
但我不能说
Ball.bounce();
因为这使我的系统中出现“哪个球?”这个问题。
static方法和变量与特定实例无关。
例如:
class Werewolf { static boolean fullMoon = false; static void setFullMoon(boolean isVisible) { fullMoon = isVisible; // pre pre pre } void eatPerson(Person p) { // pre pre pre }}静态方法适用于所有狼人,因此在类上被调用:
Werewolf.fullMoon(true);
非静态(实例)方法应用于特定的狼人,因此在实例上被调用。
jeff.eatPerson(chuck);
杰夫是狼人。查克就是他吃的人。尝试忽略残酷的评论。我们都从某个地方开始。



