为什么对象类是java中的超类昨天我有一次采访,面试官问我问题。为什么对象类是java中的超类
回答
因为它只是一个定义。实际上,第4.3.2条jls8
表示:
Object类是所有其他类的超类(§8.1.4)。
没有更正式的方式来定义Object
类。
它不仅仅是*“a”*单个定义即使它被概括为这样。这种行为是Java类型系统中难题的另一部分。 (例如,有*可能是一种语言,其中对象类型是每个其他类的直接超类,但这不是Java。) – user2864740
@ user2864740我同意,但它认为OP要以正式的方式理解Object类。 –
我是挑选使用“*只是*一个定义”。这是一个定义/规则的集合,这是一个真实的陈述,但不是整个故事。 – user2864740
因为Java中的所有对象都继承自Object
类。
因此,如果您创建您的班级,例如MyObject
,此对象的父级将为Object
类。
这意味着Object
是超类MyObject
类。
@ user2864740在您的评论中,您将展示另一个示例,我们不能使用'super'来获取Object类(在您的示例中),但我们始终可以通过将对象转换为Object类来获得Object类,因为所有的对象都从Object类继承而来。 –
是的,我删除了我的评论,因为使用*继承*是正确的。 – user2864740
Java中的所有类都默认“扩展”Object类,这就是为什么Object是Java中每个类的超类。
根据类“Object”的definition。
类对象是类层次结构的根。每个类都有Object作为超类。所有的对象,包括数组,都实现了这个类的方法。
这是之前讨论了类似的问题... Default class that is extended by all classes in java
这是*不*暗示所有对象“扩展”对象!一个类只能有一个超类,因此'A类扩展B'表明A虽然*不是*“扩展”对象(它扩展了B),即使A仍然是Object的一个子类型。 – user2864740
任何类都可以拥有Object,因为它是直接或间接的超类。如果'A'不扩展'Object',那么'B'的子类'A'就是。我只是猜测按照定义,因为“包括数组在内的所有对象都实现了这个类的方法(Object Class)”,Object扩展了Objects。 –
这个问题是关于使用的措辞。 A *从B继承*(并且A *通过扩展从Object继承*),但是仅*扩展* B. – user2864740
因为Object类,在java.lang包中,坐镇类层次结构树的顶端。
我喜欢使用“层次树”,但这个答案需要刷新。 – user2864740
我向他解释说,对象类包含一些常用的方法,我们可以很容易地在任何类中覆盖该方法,所以他说,最后我们将自己的逻辑用于重写方法,那么为什么定义对象类需要什么? –
- 1. 为什么超超类是JAVA
- 2. 为什么java中的每个类都是对象的子类?
- 3. 为什么我的超类对象调用其子类方法?
- 4. 对象是抽象类的超类吗?
- 5. 为什么我们使用引用子类对象的超类型对象
- 6. 什么是“[对象类型]”
- 7. 为什么在Java中不允许将子类对象的子类集合转换为超类对象的超类集合?
- 8. 为什么对象类不是空值
- 9. Java中的对象的Serialize超类
- 10. 在java中由超类变量引用的子类对象有什么用?
- 11. Java,是否有可能将对象从子类转换为超类对象
- 12. 在java中创建超类的类型的子类对象
- 13. 什么是抽象数据类型?它是Java中的类吗?
- 14. 排序的超类是超类的子类的对象列表
- 15. 什么是类的本身是对象?
- 16. 为什么java方法与对象而不是类相关?
- 17. 为什么只有java.lang。对象在java中被赋予超类吗?
- 18. java抽象类,构造函数未在超类中调用,为什么?
- 19. 如何确定什么是超类或对象的接口
- 20. 什么是Java中“java.lang.Enum”类型对象的身份和状态?
- 21. 这是什么类型的对象在Java中?
- 22. Instance_eval:为什么子类的类是超类
- 23. 为什么使用你的超类创建一个对象?
- 24. 什么是CodeIgniter中的超级对象?
- 25. Java反射,对象有什么类?
- 26. Java:超类数组对象分配有子类数组对象
- 27. 什么是动态类型的对象
- 28. 类对象的HashSet。什么是散列?
- 29. 什么是MySQL对象的类?
- 30. 这是什么类型的对象?
你回答了什么? –
因为Java是这样设计的? – Tiny
我向他回答说:“一个对象类给每个类提供共同的行为,这就是为什么对象类是java中的超类,它为所有类提供了通用方法” –