1.方法调用
2.调用时特性
静态方法调用只和引用类型有关 实例方法和实例变量调用只和引用指向的对象有关
class StaticSuper {
public int field = 1 ;
public static int sField = 2 ;
public static String staticGet () {
return "Base S" ;
}
public String dynamicGet () {
return "Base D" ;
}
}
class StaticSub extends StaticSuper {
public int field = 11 ;
public static int sField = 22 ;
public static String staticGet () {
return "Derived S" ;
}
public String dynamicGet () {
return "Derived D" ;
}
}
public class StaticAndField {
public static void main (String[] args) {
StaticSuper sup = new StaticSub();
System.out.println(sup.staticGet());
System.out.println(sup.dynamicGet());
System.out.println(sup.field);
System.out.println(sup.sField);
StaticSub sub = new StaticSub();
System.out.println(sub.staticGet());
System.out.println(sub.dynamicGet());
System.out.println(sub.field);
System.out.println(sub.sField);
}
}
3.多态性
原则上静态犯法不具有多态性; 如果子类和父类有相同的方法:
静态方法是被隐藏,在子类中同时拥有子类和父类方法;
4.域
实例变量和静态变量调用都只跟应用类型有关 具体参照前面案例代码输出结果
5.私有实例方法
由于默认是final的,在调用上和静态方法类似,只跟引用类型有关