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类需要一个基本上什么都不做的填充方法?
答案 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
}
}