如果我有一个C类它继承B类和B类继承类A,然后 如果创建的C类一个目的,是创建超类的对象??如果是的话,怎么样? 如何访问A类的私人会员?创建派生类的对象时创建超类的对象吗?
回答
- 是的,超类的对象被创建。
- 你不能访问你的超类的私人成员,否则他们不会是私人的。你可以在超类中拥有protected或public accessor方法,并且可以返回你的私有变量的值。或者,您可以使用反射来访问私有变量。但是,你可以使用任何东西,不仅仅是超类。
1-否 - 没有创建超类的单独实例。但是,可以使用对超类的引用的引用。 “C is a B ...” –
抱歉..我纠正了这个问题.. –
您无法访问类之外的私有变量。
访问它们,
1.你可以让他们公开或保护,但它不是一个好主意。
2.你可以为它编写getter方法这又不是私人的方法,这是很好的做法。
3.您可以使用反射来访问它。
提供更多信息,帮助您更好的
抱歉..我更正了这个问题.. –
是否超类的对象时,就产生派生类对象时?
的超类的构造号被用来初始化currebt对象的超类定义的状态,但是这并不等于创建超类的一个实例。
如果我有一个继承类B的类C,而类B继承了类A,那么如果我创建了一个类C的对象,是创建了超类的对象??
否参见上文。
如果您创建一个C的实例,你将有一个对象,其最派生类型是C.这个对象将也是instanceof
B,但它可能不会表现得完全像一个普通的B Due公司以压倒一切的方法在C和其他东西。
如果是,怎么办?
模拟。
如何访问A类的私有成员?
您不能直接从子类访问超类的private
成员。这就是访问修饰符的含义。如果您需要访问它们,您需要使用它们,您需要在超类中创建非私有方法(例如getters和/或setter)或更改成员的访问权限。 (另一种方法是使用反射来覆盖private
访问修饰符,但您应该只使用它作为最后的手段。最好修复超类代码以提供所需的访问权限......或者指出该子类根本不需要访问。)
抱歉..我更正了这个问题.. –
这取决于您使用的是哪种语言。如果你使用的是C++,你可以使子类成为超类的朋友,然后你可以访问它的公共成员。如果您使用Java,则可以使用反射来定位超级对象并对其进行思考,但这会比其值得的更麻烦。
- 1. 创建“派生类”类型的对象
- 2. 从C#派生类对象创建新的基类对象#
- 3. 在基类对象内创建派生类对象
- 4. 创建子类对象是否也创建其超类的对象?
- 5. 创建类对象
- 6. 创建类对象
- 7. 当创建子类对象时,是为超类创建的第二个对象吗?
- 8. 创建新的类对象
- 9. 如何在PHP中创建派生类对象作为基类对象
- 10. 抽象对象或创建类对象
- 11. 如何创建我的抽象类的无名派生类的对象?
- 12. 在超类中创建对象
- 13. 的Java:创建类型的对象时,超类
- 14. 一个子类可以创建抽象类型超类的对象吗?
- 15. 如何创建派生类由创建属性隐式指定的对象?
- 16. 创建对象从类对象为
- 17. 创建I类对象数组创建
- 18. Swift泛型,创建派生对象
- 19. 创建类的对象时出错
- 20. 从.net中的现有基础对象创建派生对象
- 21. 在java中创建超类的类型的子类对象
- 22. 创建抽象类的对象 - 错误
- 23. 为对象创建类
- 24. 创建数组类对象
- 25. VB6创建类对象
- 26. 预防对象类创建
- 27. 创建类对象列表
- 28. 创建类对象列表
- 29. Python类和对象创建
- 30. 创建在C#类对象
什么? C类继承B类和C类继承B类?你不是指延期,为什么陈述两次? –
你不能访问'A类'的私人成员 - 它不会出现在你的继承heirachy ... – Nim
你的描述是有点关闭。但如果您想访问父类的私有字段,请将字段更改为“受保护”或更好,然后为这些字段提供访问者。 – user1329572