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...

本文详细解析了Java中的多态概念,包括属性和方法的多态特性,以及代码执行的具体顺序。通过实例展示了变量多态依赖声明类型,而方法多态则依据调用时的实际类型。同时,阐述了静态成员与构造过程中的执行流程。
3322

被折叠的 条评论
为什么被折叠?



