1.属性和方法多态
public class Fu {
public int num = 10;
public Fu() {
System.out.println("fu");
}
public void run(){
System.out.println("A.run...");
}
}
public class Zi extends Fu {
public int num = 20;
public Zi() {
System.out.println("zi");
}
public void run(){
System.out.println("B.run...");
}
}
public class Main {
public static void main(String[] args) {
Fu zi = new Zi();
System.out.println(zi.num);
zi.run();
}
}
结果:
fu
zi
10
B.run...
分析:方法有多态,属性没有多态,变量不能重写
总结:
- 变量多态看左边
- 方法多态看右边
- 静态多态看左边
2.代码执行顺序
public class Fu {
public int num = 10;
public void run(){
System.out.println("Fu.run...");
}
static {
System.out.println("静态代码块Fu");
}
{
System.out.println("构造代码块Fu");
}
public Fu() {
System.out.println("构造方法Fu");
}
}
public class Zi extends Fu {
public Zi() {
System.out.println("构造方法Zi");
}
public void run(){
System.out.println("Zi.run...");
}
static {
System.out.println("静态代码块Zi");
}
{
System.out.println("构造代码块Zi");
}
}
public class Main {
public static void main(String[] args) {
Fu zi = new Zi();
zi.run();
}
}
结果:
静态代码块Fu
静态代码块Zi
构造代码块Fu
构造方法Fu
构造代码块Zi
构造方法Zi
Zi.run...