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的,在调用上和静态方法类似,只跟引用类型有关