在 PHP 中扩展抽象类时出现致命错误

发布于 2024-12-14 06:48:24 字数 806 浏览 1 评论 0原文

我正在学习高级 OOP PHP..(或者我想学习:))

这是我的代码。

摘录:

<?php 
abstract class Karakter
{
    abstract public function isim($name);
    abstract public function yas($age);

    public function yazdir()
    {
        print $this->isim() . " " . $this->yas();
    }
}

class Insan extends Karakter
{
    public $isim;
    public $yas;
    public function isim()
    {
        return "Bu adamın ismi: " . $this->isim;
    }

    public function yas()
    {
        return "Bu adamın yaşı: " . $this->yas;
    }
}

当我运行这段代码时,我无法获胜。我可以看到这个错误:

Fatal error: Declaration of Insan::isim() must be compatible with that of Karakter::isim() in C:\AppServ\www\OOP\1.php on line 26

I'm learning advanced level of OOP PHP..(Or I want to learn :))

This is my code.

Excerpt:

<?php 
abstract class Karakter
{
    abstract public function isim($name);
    abstract public function yas($age);

    public function yazdir()
    {
        print $this->isim() . " " . $this->yas();
    }
}

class Insan extends Karakter
{
    public $isim;
    public $yas;
    public function isim()
    {
        return "Bu adamın ismi: " . $this->isim;
    }

    public function yas()
    {
        return "Bu adamın yaşı: " . $this->yas;
    }
}

When I run this code I can't win through. I can see this error:

Fatal error: Declaration of Insan::isim() must be compatible with that of Karakter::isim() in C:\AppServ\www\OOP\1.php on line 26

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半葬歌 2024-12-21 06:48:24

您已在抽象类中使用一个参数定义了函数imim

abstract public function isim($name);

为了在任何子类中正确实现此函数,您必须仅使用一个参数覆盖该函数:

class Insan extends Karakter {
    public function isim($name) {
       [..]
    }

    ...
}

You have defined the function isim in the abstract class with one parameter.

abstract public function isim($name);

In order to correctly implement this function in any subclass you must override the function with exactly one parameter:

class Insan extends Karakter {
    public function isim($name) {
       [..]
    }

    ...
}
内心荒芜 2024-12-21 06:48:24

在抽象类中,您定义了 isim() 来期望参数。但在延伸类中,你却没有遵循这个规则。

这是定义:

abstract public function isim($name);

但是你可以像这样扩展它,不带参数:

public function isim()

In your abstract class, you defined isim() to expect a parameter. But in the extending class, you did not follow this rule.

This is the definition:

abstract public function isim($name);

But then you extend it like this, without a parameter:

public function isim()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文