菜鸟提问:有关java

来源:百度知道 编辑:UC知道 时间:2024/05/10 10:02:03
class Test
{
public static void main(String[] args) {
A a = new B();
}}

abstract class A
{
public A()//构造函数
{
System.out.println("I'm A");
}
}

class B extends A
{
B()//构造函数
{
System.out.println("I'm B");
}
}

1:请问上面的这行代码中,"A a=new B();"急么理解?
2:为什么最后的结果是先打印出 "I'm A"???

分不多,希望大家能详细的说说,刚入门的java菜鸟,望大家耐心指导!!!!!!!
可以说明白点吗???

先执行父类的构造,再执行子类的,
这是根据继承关系而来的

就跟遗传基因一样,先又父亲的遗传基因给你你才能去创造自己的方法

java的多态性
A a=new B()表示a的类型是A指向实例B,
这时调用a的普通方法的时候,表现的是B的行为.

对于构造,java的构造过程是先构造父类,再构造子类.所以你看到I'm A.然后才出现I'm B

这是多态的例子,所要表述的意思主要是:
定义一个类型A,但他可以在构造的时候指向一个A的子类B的实例。实际调用方法的时候编译器会自动识别,而去调用到B的方法。所以可以不大规模改变主程序的情况下,只改变子类中方法就能实现原程序的功能更新

实例化一个对象的时候总是先执行该类的父类的构造函数

属于向上转行

先调用父类的灾调用子类的
先执行静态的再执行非静态的