JAVA类的继承之多态特性

  父类可以接收子类的实例,方法的覆盖,属性的隐藏,这些都使我非常疑惑,今天有点时间记录之。

  话不多说,直接上代码上结果

1.

public class TestDto{
    public static void main(String[] args) {
        ClassInitializeChild child=new ClassInitializeChild();
        System.out.println(child.name);
    }
}
class ClassInitializeParent{
    public String name="parent";
    public void print(){
        System.out.println("parent="+name);
    }
    public ClassInitializeParent(){
        print();
    }
}
class ClassInitializeChild extends ClassInitializeParent{
    public String name="child";
    public void print(){
        System.out.println("child="+name);
    }
    public ClassInitializeChild(){
        print();
    }
}

  结果:

  

child=null
child=child
child

2.

public class TestDto{
    public static void main(String[] args) {
        ClassInitializeParent parent=new ClassInitializeChild();
        System.out.println(parent.name);
    }
}
class ClassInitializeParent{
    public String name="parent";
    public void print(){
        System.out.println("parent="+name);
    }
    public ClassInitializeParent(){
        print();
    }
}
class ClassInitializeChild extends ClassInitializeParent{
    public String name="child";
    public void print(){
        System.out.println("child="+name);
    }
    public ClassInitializeChild(){
        print();
    }
}

  结果:

  

child=null
child=child
parent

3.

public class TestDto{
    public static void main(String[] args) {
        ClassInitializeParent parent=new ClassInitializeChild();
        parent.print();
    }
}
class ClassInitializeParent{
    public String name="parent";
    public void print(){
        System.out.println("parent="+name);
    }
}
class ClassInitializeChild extends ClassInitializeParent{
    public String name="child";
    public void print(){
        System.out.println("child="+name);
    }
}

  结果:

  

child=child

4.

public class TestDto{
    public static void main(String[] args) {
        ClassInitializeParent parent=new ClassInitializeParent();
        parent.print();
    }
}
class ClassInitializeParent{
    public String name="parent";
    public void print(){
        System.out.println("parent="+name);
    }
}
class ClassInitializeChild extends ClassInitializeParent{
    public String name="child";
    public void print(){
        System.out.println("child="+name);
    }
}

  结果:

parent=parent
原文地址:https://www.cnblogs.com/wuyouwei/p/6274190.html