先编写程序:
class Demo {
public void fun1() {
System.out.println("Hello");
}
public static void fun2() {
System.out.println("Hi");
}
}
public class DemoTest {
public static void main(String[] args) {
Demo d = new Demo();
d.fun1();
Demo.fun2();
Demo d2 = new Demo();
d2.fun2();
}
}
运行结果:
说明: (一)在Java中,几个不同的类,比如本例中的Demo和DemoTest,可以写在同一个文件中。 同一个文件中,只能有并且必须有一个类被声明为public。 比如上面的程序,要么声明为
class Demo
public class DemoTest
要么声明为
public class Demo
class DemoTest
当然了,如 上一节 的程序所示,若把多个类分成多个文件来写,则所有的类不需要加public修饰符
(二)文件名称一定要与被声明为public的那个类同名。比如本程序的文件只能命名为DemoTest.java,不能命名为Demo.java 当然,假如声明成
public class Demo
class DemoTest
则只能把文件命名为Demo.java,不能命名为DemoTest.java
(三)运行javac DemoTest.java后,有几个类就会成几个class文件。比如上面的程序,会生成Demo.class和DemoTest.class
(四)执行java命令时,只能执行带main方法的class文件。 所以,不管本程序是声明为
class Demo
public class DemoTest
还是声明为
public class Demo
class DemoTest
都必须执行java DemoTest,不能执行java Demo
(五)不带static关键字修饰的方法为非静态方法,即实例方法。调用方式为对象.方法名。这样就必须先生成对象才能调用普通方法。比如 Demo d = new Demo(); d.fun1();
(六)带static关键字修饰的方法为静态方法。调用方式有两种。 1)类名.方法名 比如Demo.fun2() 这是因为,类中的静态成员会随着类的加载而加载。也就说,只要类存在(此时对象还没创建),静态方法就已经存在了。静态方法的生命周期与类的生命周期一样。所以可以使用类名.方法名 2)对象.方法名 Demo d2 = new Demo(); d2.fun2(); 这是因为,在创建对象时,静态方法早就已经存在了。所以可以使用对象.方法名。