일반적인 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();
코드 출력 '부모'에서 다음과 같은 클래스가있는 경우. 이 점이 부모 개체를 가리키고 있기 때문에 이해합니다. 맞습니까?
내가 PHP5에서 동일한 작업을 수행하는 경우 :
class ParentClass {
public $val = 'parent';
public function foo()
{
echo $this->val;
}
}
class ChildClass extends ParentClass {
public $val = 'child';
}
$a = new ChildClass();
$a->foo();
결과는 '아이'일 것이다.
비록을 그때 PHP는 '부모'가 표시됩니다
private $val = 'parent';
에
public $val = 'parent';
를 변경하는 경우. C#은 항상 공개 및 개인 액세스 수정자를 모두 '부모'로 반환합니다.
어떤 이유가 있습니까? 그리고 어떤 행동이 맞습니까?
유용한 링크를 읽으시 길 바랍니다.
감사합니다.
파생 클래스의 변수에 'new'키워드를 사용하지 않으면 C#에서 해당 코드에 대해 경고합니다. –