나는 myName
의 클래스와 함께 Foo
을 가지고있다. Foo
에서
클래스 bar
상속과는 호출되는 속성이 난 이후이 확인을해야한다 생각같은 이름의 상속 된 함수를 숨기는 속성이있는 이유는 무엇입니까?
myName
:
- 가 property will compile
get_myName()
에 (그래서Foo::myName(int,int)
와의 충돌이 없을 것) Foo::myName
에는 인수가 있지만 분명히 속성은 (다시 colision이 없습니다).int get_myName() { return a+b; }
로 : 나는
bar
에 기능을 추가하는 경우, 또한public class Foo { public int myName(int a, int b) { return 0; } } class Bar: Foo { int a; int b; int myName { get { return a + b; } } }
:
'Bar.myName' hides inherited member 'Foo.myName(int, int)'. Use the new keyword if hiding was intended.
예제 코드 :
하지만 난 여전히 경고가 특급 내가 이전에 선언 한 함수에 대한 오류가 발생했습니다.
그래서 여기서 무엇이 일어나고 있습니까? 이 속성은 get_myName()
외에 myName
의 모든 오버로드를 사용할 수 없습니까?
속성과 동일한 메서드 이름을 사용하는 이유를 묻는 질문이 있습니까? 일반적으로 리턴 타입에 어떤 로직이 관련되어 있다면, 메소드를 사용하는 것이 더 낫다. else 속성 – Sayse
@Sayse 상위 클래스가 더 일반적이고 결과가 무엇인지 결정하는 데 인수가 필요하다. 파생 클래스는 훨씬 더 구체적이며 인수가 고정되어 있습니다. 모든 속성은 get {base.myName (this.a, this.b);}입니다. 그래서 당신은 functinality가 동일하다는 것을 알 수 있습니다. 속성은 코딩하기 쉽도록하기위한 것입니다. –