假设我有这个界面......
interface Foo {
public function bar();
public function nothing();
}
我的任务是写一个抽象类,它也抽象出方法",我只是想确保我正确地写这个。我的代码如下......
abstract class Bar implements Foo {
abstract public function bar();
abstract public function nothing();
}
这是正确的做法吗?
答案 0 :(得分:0)
您不需要在抽象类中实现该接口。您的抽象类提供了一个类似于扩展它的类的接口的接口。
abstract class Bar {
abstract public function bar();
abstract public function nothing();
public function concreteMethod() {
print "I can do this in an abstract class";
}
}
class Concrete extends Bar {
public function bar() {
print "in bar";
}
public function nothing() {
//nothing
}
}
答案 1 :(得分:0)
如果您不需要在抽象类中实现某些共享(通过所有子类)功能,则最好直接从接口派生,以使事情不会变得不必要。
在这种情况下,整个事情可以有意义地简化为:
<?php
interface Foo
{
public function bar();
public function nothing();
}
class C implements Foo
{
public function bar() {
echo 'bar';
}
public function nothing() {
echo 'nothing';
}
}
$obj = new C();
$obj->bar();
?>
阅读更多内容:
Is it good or bad for an abstract class to implement an interface?
答案 2 :(得分:0)
我不知道,但有一次机会是使用这样的实现接口创建抽象类。
interface Foo {
public function bar();
public function nothing();
}
abstract class Bar implements Foo {
public function bazz() {
echo ' Bye';
}
}
class Test extends Bar {
public function bar()
{
echo 'Hello ';
}
public function nothing()
{
echo 'World';
}
}
通过这个你有一个抽象类,从接口有抽象方法。它还用于某些体系结构设计中,您希望父类作为抽象类,但在接口中定义所有抽象方法。