Q
基类和派生类
0
A
回答
0
不,你不能。如果你碰巧知道一个声明为Base类的对象实际上是派生类,那么你可以施放它。但是在基类中,你不能访问派生类的成员。
2
您可以从基类代码访问派生类中的代码,但只能从实际上是派生类对象的对象中访问代码,并且只有在涉及的方法是虚方法时才可以。
如果您有一个本身就是基类实例的对象,那么在该实例中您无法从基类中看到派生类代码。
例如
public class Baseclass
{
public void Foo()
{
Bar();
}
public virtual void Bar()
{
print("I'm a BaseClass");
}
}
public classs Derived: BaseClass
{
public override void Bar()
{
print("I'm a Derived Class");
}
}
Main()
{
var b = new BaseClass();
x.Foo() // prints "I'm a BaseClass"
// This Foo() calls Bar() in base class
var d = new Derived();
d.Foo() // prints "I'm a Derived Class"
// in above, the code for Foo() (in BaseClass)
// is accessing Bar() in derived class
}
0
有很多的,一个基类可以访问派生类(取决于编程语言)的成员方法,但通常它被认为是一个设计的气味。
相反,您通常希望基类仅直接访问其自己的成员,并允许派生类重写方法。
相关问题
- 1. 使用在基类派生类,而派生类的基类
- 2. 包中的基类和派生类
- 3. NHibernate的基类和派生类映射
- 4. 从基类INITIALISE派生类
- 5. C++ - 派生类到基类
- 6. 在派生类派生类到基类在PHP
- 7. 在基类和派生类中使用基类的装饰器
- 8. C#和基础派生类Casting
- 9. 派生自基类和覆盖功能
- 10. 基础和派生类分配
- 11. 检测基类的派生指向派生类
- 12. Friendness和派生类
- 13. 分配派生类的基类
- 14. 从基类引用派生类参数
- 15. 明确投基类派生类
- 16. Java;将基类转换为派生类
- 17. 模板化基类中的派生类
- 18. 从派生类访问基类函数
- 19. 基类内的派生类的大小
- 20. deepcopy /克隆派生类到基类
- 21. 派生类使用基类的属性?
- 22. C#继承。从基类派生类
- 23. 派生类访问的基类 - 如何?
- 24. 将基类扩展为派生类
- 25. 派生类的基类枚举值?
- 26. C++派生类访问基类成员
- 27. weak_ptr的基类,而shared_ptr是派生类?
- 28. 将派生类转换为基类
- 29. 基类和派生类的运行时类型信息
- 30. C++图案:1x基站类+ NX派生类但具有_Last resort_派生类
你正在试图做什么 - 这闻起来像你的设计可能需要看? – Paddy 2010-07-07 15:23:23
如果您告诉我们您正在使用哪种编程语言,以及您正在尝试完成什么,那么您将得到更有帮助的答案。 – 2010-07-07 15:26:58