类的访问权限
访问权限 同一个类 同一个包 不同包的子类 不同包的非子类 private 是 default 是 是 protected 是 是 是 public 是 是 是 是
静态方法
在外部调用静态方法时,可以使用”类名.方法名”的方式,也可以使用”对象名.方法名”的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。 静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法 ),而不允许访问实例成员变量和实例方法;实例方法则无此限制。 静态方法只能访问静态成员,实例方法可以访问静态和实例成员。之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,而静态方法在执行时,并不一定存在对象。同样,因为实例方法可以访问实例成员变量,如果允许静态方法调用实例方法,将间接地允许它使用实例成员变量,所以它也不能调用实例方法。基于同样的道理,静态方法中也不能使用关键字this。 main()方法是一个典型的静态方法,它同样遵循一般静态方法的规则,所以它可以由系统在创建对象之前就调用。 静态main方法中调用本类的动态方法时,要用new ClassName().MethodName();
TestStaticMain
public class TestStaticMain {
A a;
public static void main (String[] args) {
new TestStaticMain().start();
}
public void start () {
a = new A();
}
}
class A {
}
命令行下运行一个class文件
要在com的同级目录下执行.class文件 java com.coder352.AAA 问题是这样的,他要去他的一个web项目下执行一个class文件(这个文件是带有main函数入口的,所以执行是可行的),但是根据自己的经验直接java com.xxx.yyy.AAA 来执行,果断报错,找不到这个class. Exception in thread “main” java.lang.NoClassDefFoundError: com/myproject/ChangePassword. 只要环境变量中 CLASSPATH -> .;%JAVA_HOME%\lib;%JRE_HOME%\lib; 就行了 java 编译生成.class文件,要用 java aaa.java javac 运行.class文件,不加后缀名 java aaa