多态的概念
* 一个事物在不同时刻的体现(堆内存中对象形式)
* 多态的前提条件:
* 1)必须有继承关系(继承的好处第三点作为多态的前提条件)
* 如果没有继承谈不上多态
* 2)方法重写,子类继承父类,将父类的功能覆盖掉,使子类最具体的功能
* 3)父类引用指向子类对象
* 父类名 对象名=new 子类名();(向上转型)
* 多态的成员变量:
* 编译看左边,运行看左边
* (等号左边编译通过,说明Fu类存在这个变量;运行看左边,访问的是Fu类的变量)
* 成员方法:
* 编译看左,运行看右
* (等号左边编译通过,说明Fu类存在这个方法,运行看右,子类出现和父类一模一样的方法声明:方法重写)
* 静态的成员方法:
* 编译看左,运行看左!
* (静态的算不上方法重写,跟类有直接关系,随着类的加载而加载)
* 构造方法:存在继承关系(还是分层初始化)先让父类初始化,然后是子类初始化
* */
//定义一个父类
class Fu{
public int num=100;
public void show() {
System.out.println("show Fu");
}
public static void function() {
System.out.println("function Fu");
}
}
//子类
class Zi extends Fu{
public int num2=200;
public int num=50;
public void show() {
System.out.println("show Zi");
}
public static void function() {
System.out.println("function Zi");
}
}
//测试类
public class DouTaiDemo {
public static void main(String[] args) {
//创建对象:多态的形式
//父类引用指向子类
Fu f=new Zi();
System.out.println(f.num);
f.show();
f.function();
}
}