2012-03-09 196 views
3
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的子类,所以如果有一个测试类需要在工人类中使用一个方法。在这种情况下,对象duck是类型转换成Boss /的,但在代码中,类型方法只能在worker类中使用,而不能在boss类中使用。然而java要求Boss类包含类型方法,即使它没有被使用。如何让方法只在工人类中声明或者老板类是否需要填充方法本质上什么都不做?Java中的继承和方法

回答

1

使用接口。使Worker实现该接口,但不是Boss

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

interface YourInterface 
{ 
     public void type(); 
} 
4

如果只有Worker公开方法type(),那么你需要投你的对象回Worker,然后才能使用它。例如。

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(); 
} 
+0

你能解释一下什么呢'老板的老板=(老板)工;'这里的意思?如果不创建一个'工作者'实例,你可以投它吗?请说明。 – noMAD 2012-03-09 06:53:32

+0

对不起,这应该是老板老板=(老板)的鸭子; – 2012-03-09 06:58:33

+0

@noMAD:修正了错字。 – ChrisWue 2012-03-09 07:00:59

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 
      } 
    } 
+1

我承认我不经常使用Java,而且我有点生疏,但我很确定你的代码不会编译。 – ChrisWue 2012-03-09 07:07:11

+0

Plz告诉我如何调用一个方法父母参考,如果它不在父... Plz一次尝试检查您的代码.... – 2012-03-09 07:18:02

+1

@ Sumit..Now检查出来... – 2012-03-09 07:22:09

1

这是OOP基本原理.. 可以调用只有那些法家长参考,这是家长存在..

Boss boss=new Worker(); 

使用boss我只调用Boss中存在的方法在完成时存在方法存在于父类中的存在波夫情况..

所以你只有2个方法来调用子类的个人方法..
1: -创建你的父母同样的方法。父母可能interface or class驱逐出境人员说。
第二: -或者downcast到你的子类..

(Worker)boss.type();