Java中的继承和方法

时间:2012-03-09 06:43:49

标签: java inheritance

  public class TestBoss {

      public static void main(String[] args) {
                  Worker duck = new Worker();

                  (Boss) duck.type();
       }

 public class Boss{
       //stuff
 }

 public class Worker extends Boss{
       public void type(){
        //stuff
       }
 }

如果有一个名为boss的超类和一个名为worker的子类。因此,如果有一个测试类需要在worker类中使用方法。在这种情况下,对象duck是类型转换为Boss /在代码中,类型方法只能在worker类中使用,而不能在boss类中使用。但是java要求Boss类包含类型方法,即使它没有被使用。如何使方法仅在worker类中声明,或者boss类需要一个基本上什么都不做的填充方法?

4 个答案:

答案 0 :(得分:4)

如果仅Worker公开方法type(),那么您需要先将对象强制转换回Worker,然后才能使用它。 E.g。

Worker duck = new Worker();
...
Boss boss = (Boss)duck;
...
if (boss instanceof Worker) // check in case you don't know 100% if boss is actually a worker
{
    (Worker)boss.type();
}

答案 1 :(得分:1)

使用界面。让Worker实现该界面,但不是Boss

 public class Worker extends Boss implements YourInterface
 {
  ...
 }

 interface YourInterface
 {
       public void type();
 }

答案 2 :(得分:1)

这是OOP的基本原理.. 您可以调用只有父项引用的那些方法,它存在于父类中。

Boss boss=new Worker();

使用boss你只调用Boss coz中存在的方法在完成时方法存在检查在上述情况下的父类...

所以你只有2种方式来调用儿童班的个人方法。
1st: - 在您的父级中创建相同的方法。家长可能interface or class喜欢 deporter 第二名: - downcast进入您的孩子班..

(Worker)boss.type();

答案 3 :(得分:0)

试试这个......

 public class TestBoss {

          public static void main(String[] args) {
Boss duck = new Worker();
                      ((Worker) duck).type();
           }

     public class Boss{
           //stuff
     }

     public class Worker extends Boss{
           public void type(){
            //stuff
           }
     }