1、静态方法中可以引用静态方法和静态变量,不可以引用非静态方法与变量。
这很好理解:因为静态方法不需要实例化类,可以直接用(类名.方法名)的方式调用。 假设静态方法可以操作非静态方法与变量,那么对于(类名.方法名)的这种方法调用方式, 那么其中的非静态变量就没有被实例化。(我们知道静态变量是不需要实例化的)。 老师上课的时候讲因为静态方法中没有this指针。
2、非静态方法中可以引用静态方法和静态变量,也可以引用非静态方法与变量。
3、子类不能重写父类的静态方法,但可以声明与该静态方法相同的方法,从而将父类的静态方法隐藏。
这让我联想起了记下的一个关于private 方法的经验
public class ClassA {
private void method1(){
System.out.println("called ClassA's method1!!!");
}
static void method2(){
System.out.println("called ClassA's method2!!!");
}
}
class SubClassA extends ClassA{
void method1(){
System.out.println("called Sub's method1!!!");
}
static void method2(){
System.out.println("called Sub's method1!!!");
}
public static void main(String args[]){
SubClassA a=new SubClassA();
a.method1(); //SubClassA类中无法调用父类的method1,因为该方法为私有(private)
a.method2(); //该方法也是对父类中的静态方法的覆盖
}
}