7

これは動作するコードですが、別のオブジェクト(コメント付き)を使用せずに、オブジェクトの使用方法を$fooどのように使用できるかを知りたいです。オブジェクト指向プログラミングの概念は初めてなので、質問するのは難しいかもしれませんが、実際には見つけることができません:(printItem()class Foo$bar

私はスコープ解決演算子を使用してを使用していますprintItem()Foo class、この機能を使用できるのはいつですか?オブジェクトの作成の使用は何ですか?適切なコーディング環境でスコープ解決演算子を使用する場合。

<?php

class Foo
{
    public function printItem($string)
    {
        echo "This is in class Foo ". $string ."<br />";
    }

    public function printPHP()
    {
        echo "PHP is great "."<br />";
    }
}

class Bar extends Foo
{
    public function printItem($string)
    {
        echo "This is in class Bar ". $string ."<br />";
    }
}       

//$foo = new Foo;
$bar = new Bar;

$bar->printPHP();
$bar->printItem("Bar class object");
//Foo::printItem("Mental Case");
4

3 に答える 3

16

静的メソッドとして定義し 、子メソッドで使用または呼び出すことprintItemができます。Foo::printItem("Mental Case");

public function printItem($string)
{
    parent::printItem($string);
    echo "This is in class Bar ". $string ."<br />";
}
于 2012-10-18T07:08:16.627 に答える
2
<?php
class test {

    public function __construct() {}

    public function name() {
       // $this->xname('John');
          $this->showName('John');
    }

    private function showName($name) {
        echo 'my name in test is '.$name;
    }
}

class extendTest extends test {

    public function __construct() {
        parent::__construct();
    }

    private function showName($name) {
        echo 'my name in extendTest is '.$name;
    }
}

$test = new extendTest();
$test->name();
?>

結果: テストでの私の名前は John です

showName メソッドの可視性を public または protected に変更すると、上記の結果は次のようになります。extendTest の私の名前は John です

于 2012-10-18T07:11:04.410 に答える
0

"static" キーワードを追加して、printItem を静的メソッドにします。printItem($string) は、このクラスのオブジェクトを作成せずに使用できます。

<?php

class Foo
{
    static public function printItem($string)
    {
        echo "This is in class Foo ". $string ."<br />";
    }

    public function printPHP()
    {
        echo "PHP is great "."<br />";
    }
}

class Bar extends Foo
{
    public function printItem($string)
    {
        echo "This is in class Bar ". $string ."<br />";
    }
}       

//$foo = new Foo;
$bar = new Bar;

$bar->printPHP();
$bar->printItem("Bar class object");
//Foo::printItem("Mental Case");
于 2012-10-18T07:12:55.980 に答える