我有三个班级,分别是 A级, B级和 C级。
A类是父类,而B和C类是其子类。
在B类中有一个函数,我想在C类中访问该函数而不用B继承C类。
public class A {
}
class B extends A{
public function hello (){
return "Hello world";
}
}
public class C extends A{
public function world (){
$this->hello();
}
}
答案 0 :(得分:0)
扩展@u_mulder的评论:这确实是不可能的,因为尽管B和C都源自同一类A,但它们是不同的类,就像自行车和汽车都是车辆一样。使用自行车时,不能仅仅因为它们都是车辆而就假定使用汽车的功能。
您需要回答的问题是class B
中我需要的方法的功能是什么?它特定于class B
吗?还是所有class A
的实体?还是有所不同,它是否是一个单独的功能,但是只有class B
才需要使用?
第一种情况的解决方案是将函数移至class B
。在第二种情况下,您将函数移至类A。在第三种情况下,您将在单独的类中实现该函数,并将其注入class B
中。
我建议您阅读SOLID原则和other principles of OOP设计