请问一个关于abstrat类的问题

SoraYjy 发布于 2015/07/02 15:06
阅读 162
收藏 0

如果有一个 

abstract class A {

    abstract void run();

}

而B和C都继承自A,并实现了run()方法。

那我在其他类中调用A.run()的时候,该如何判断是调用了哪个子类实现的方法?

  


加载中
0
oneMore
oneMore

请问你怎么调用抽象类A.run(); 你说的是下面这种情况吗,父类引用指向子类对象

A b = new B();
b.run(); // 调用 B run

A c = new C();  // 调用 C run
c.run();

0
灰天大螳螂

abstract类要new的话必须在new的同时实现其abstract方法,要不就是楼上的那种方法,根本就不会产生无法判断调用的是哪个子类的方法的问题!

如下的形式:

A a = new A(){

   @override void run(){

    /////////////

    }

}

0
如比如比
如比如比

虽然不知道你想做什么但可以这样做:

funcaion (A obj) {

obj.run();

if (obj instanceof B) {

B b = (B) obj;

...

}

if (obj instanceof C) {

C c = (C) obj;

...

}


0
小楒叔
小楒叔
抽象类只能作为变量类型,不可作为new关键字后面的class对象
返回顶部
顶部