私は一般的なOOP質問があります。C#とPHP OOPの違い
私はC#
class Parent
{
public string val = "Parent";
public void getValue()
{
Console.WriteLine(this.val);
}
}
class Child:Parent
{
public string val = "Child";
}
Child child = new Child();
child.getValue();
コード出力 '親' で、次のクラスを持っている場合。これはParentオブジェクトを指しているからです
私はPHP5で同じことを行う場合は、次の
class ParentClass {
public $val = 'parent';
public function foo()
{
echo $this->val;
}
}
class ChildClass extends ParentClass {
public $val = 'child';
}
$a = new ChildClass();
$a->foo();
結果が '子' になります。
私は
private $val = 'parent';
に
public $val = 'parent';
を変更した場合、その後PHPにも '親' が表示されますけど。 C#は常にパブリックとプライベートの両方のアクセス修飾子を持つ 'parent'を返します。
このため、何らかの理由はありますか?そして、どのような動作が正しいですか?
読むために任意の有用なリンクが高く評価されます!
ありがとうございました!
あなたが派生クラスの変数に「新しい」キーワードを使用しない限り、C#はそのコードについて警告することに注意してください。 –