父母与子女实例的关系

时间:2016-10-26 11:21:40

标签: java inheritance

我已经开始学习Java了,朋友问我这个问题,

之间有什么区别

ParentClass p = new ChildClass();

ChildClass c = new ChildClass();

提前致谢。

2 个答案:

答案 0 :(得分:3)

p只会在ParentClass中定义可访问的方法,只要它不会被转换为ChildClass的实例。 c将使用ParentClass中定义的可用方法以及ChildClass中定义的方法

例如:

class ParentClass {
   public void dothis() {
   }  
}
class ChildClass extends ParentClass {
   public void doother() {
   }  
}

p只能致电p.dothis()。调用p.doother()将导致异常,或者使程序无法编译。

c很乐意接受c.dothis()c.doother()

如果你“怀疑”(编程时你无法确定没有检查)对象可能是某个子类,你可以尝试向下传播它。
在检查对象实例之前,请务必先检查 检查通过后,您可以对象强制转换为子类。

if(p instanceof ChildClass) {
    ChildClass c = (ChildClass)p;
    c.doother();
}

答案 1 :(得分:1)

有两种类型的结合1)早期结合2)晚期结合 绑定意味着编译器使指定的过程调用失效。 方法重载是早期绑定的最佳示例

虽然运行时多态性是后期绑定的最佳示例

class Parent{

    public void test()
    {
        System.out.println("a");
    }
}
class Child extends Parent{
    int a=100;
    public void test()
    {
        System.out.println("b");
    }
}

public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Parent a =new Parent();
        a.test();
        Parent b=new Child();
        b.test();
 }
}

以上示例可能会清除您的概念