版权声明:本文自由转载,转载请注明出处。 https://blog.csdn.net/qq_38071429/article/details/85010402
举例说明:
知识点:
- 方法重载:同一个类中参数类型或者数量不同但方法名相同的方法。
- 方法重写(覆写/覆盖):出现在具有继承关系的类中,方法参数类型和个数、方法名以及返回值都相同,子类方法的访问控制权限不能小于父类方法,子类方法会覆盖掉父类方法,如果想调用父类的同名方法,可以使用super()。
多态的运行:
- 实例方法:动态绑定,即引用的变量实际引用的类型是哪一个,则运行哪一个实例方法。在运行时由java虚拟机动态决定。
- 静态方法:静态绑定,即引用的变量所声明的类型是哪一个,则运行哪一个静态方法。在编译阶段就已经做出了决定。
- 成员变量(包括静态变量和实例变量):静态绑定,即引用变量所声明的类型是哪一个,则运行哪个成员变量。在编译阶段就已经做出了决定。
Base: 引用变量所声明的类型,Sub:引用变量实际引用的类型。
public class Base {
String var = "baseVar";
static String staticvar = "staticBasevar";
void method() {
System.out.println("Base method!");
}
static void staticMethod() {
System.out.println("static Base method!");
}
public static void main(String[] args) {
Base who = new Sub();
System.out.println("who.var=" + who.var); // who.var=baseVar
System.out.println("who.static =" + who.staticvar); // who.static =staticBasevar
who.method(); // Sub method!
who.staticMethod(); //static Base method!
}
}
class Sub extends Base {
String var = "SubVar";
static String staticvar = "staticSubvar";
void method() {
System.out.println("Sub method!");
}
static void staticMethod() {
System.out.println("static Sub method!");
}
String subvar = "sssssssssss";
void submethod() {
System.out.println("Sub method!wwwwwwwwwww");
}
}