1.7 问与答
21天学通Java(第6版)
问:实际上,方法是在类中定义的函数。既然它们无论从外观和行为方面都类似于函数,为什么不将它们叫做函数呢?
答:有些面向对象编程语言确实将它们叫做函数(C++将它们叫做成员函数)。其他一些面向对象语言将位于类(对象)内、外的函数区分开来,因为在这些语言中,使用不同的术语对理解每个函数的工作原理至关重要。因为其他语言有这种区别,同时术语“方法”在面向对象技术中很常用,所以Java也使用这个术语。
问:实例变量和实例方法同类变量和类方法之间有何区别?
答:在Java程序中,您所做的几乎每项工作涉及的都是实例(也叫对象)而不是类。然而,对于有些行为和属性,存储在类本身中要比存储在对象中更合理。例如,java.lang包中的Math类包含一个名为PI的变量,它存储的是兀的近似值。这个值是不变的,因此这个类的不同对象没有必要保留自己的PI变量。另一方面,每个String对象都包含了一个length( )方法,它计算该String中的字符数。这个值对于String类的每个对象都可能不同,因而它必须是实例方法。
类变量始终驻留在内存中,直到Java程序结束运行,因此应慎用类变量。如果类变量指向一个对象,该对象也将始终驻留在内存中。这是一种导致程序占据太多内存且运行缓慢的常见问题。
问:如果在Java类中导入整个包,是否会增大这个类编译后的尺寸?
答:不会。术语“导入”容易让人误解。关键字import不会将指定类或包的字节码加入到当前创建的类中,而只是使得在一个类中引用另一个类更容易。
通过导入,在Java语句中引用类时,可使用简短的名称,这是导入的唯一目的。在代码中,如果总是必须指定完整的类名,如javax.swing.JButton和java.awt.Graphics,而不是JButton和Graphics,那将非常繁琐。