Java中interface是否继承Object类
首先我们从C++说起, c++可以多继承。也就是一个类型 --- class,可以继承自2个以上的父类型。多继承导致一个问题,很多人知道。例如,如果类型B,类型C均继承自类型A。然后类型D继承自类型B和C。那么构造D的实例的时候,由于要调用父类型的构造方法,最终会调用两次A的构造方法。结果类型D的实例有两套祖父的数据,也就是外公和爷爷长的一模一样,以后使用的时候很麻烦。每次D要和祖父打交道,都要额外的区分到底是外公还是爷爷。 再说,内存里面出现两套一模一样的东西,一个用不上,还容易引起混乱,岂不是浪费,又麻烦。
所以,java就通过严格的单一继承规则解决了这个问题。.net当然也一样,单一集成是一个定律。那么有:
所有的类型 --- 只能继承自单一的类型;
其次,大家知道,从一个class派生的必然是另一个class。Object是一个class,如果interface继承自Object,那么interface必然是一个class。那么,如果一个类型实现了一个interface,再有一个基类class, 那么它们的根源都是Object, 也即是这个类的实例也像c++一样,存在上述的问题。 因此接口肯定不是继承自Object,否则就违反了单一继承的定律。
- Set<String> result = new HashSet<String>();
- for (Method m : Set.class.getMethods())
- result.add(m.getName());
- System.out.println(result);
打印结果为:[iterator, toArray, addAll, remove, equals, containsAll, hashCode, contains, add, size, clear, isEmpty, retainAll, removeAll]
确实不包含Object中的public类型方法,也证明了上述推断。
上文是我在网上看到的一种解释。
疑问:万物皆对象,JVM中似乎提到接口和object是有关系的。 其实我觉得这个是sun当初在构建Java语法时候的“语法”问题,暂时理解他们两者之间存在一种“特别”的关系。
Java中interface是否继承Object类的更多相关文章
- Java自学-接口与继承 Object类
Java中的超类 Object 步骤 1 : Object类是所有类的父类 声明一个类的时候,默认是继承了Object public class Hero extends Object package ...
- Java中是否可以继承String类,为什么
Java中,是否可以继承String类?为什么? 答案: 不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变. public final class ...
- Java中实现多线程继承Thread类与实现Runnable接口的区别
Java中线程的创建有两种方式: 1. 通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2. 通过实现Runnable接口,实例化Thread类 在实际应用中, ...
- 为什么java中只允许继承一个类?
一个类只能继承一个其他的类 在Java语言中禁止多重继承:一个类可以具有多个直接父类.多重继承不合法的原因是容易引发意义不明确.例如,有一个类C,如果允许它同时继承A类与B类(class C ex ...
- JAVA中的集合容器操作类
目录 JAVA中的集合容器操作类 List集合 ArrayList的操作方法说明 LinkedList Stack Set Map Queue 总结 JAVA中的集合容器操作类 Java容器类库总共分 ...
- Java温故而知新(7)Object类及其方法讲解
一.java.lang.Object java.lang包在使用的时候无需显示导入,编译时由编译器自动导入. Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类. Object类 ...
- java中封装,继承,多态,接口学习总结
### 一:封装java中封装是指一种将抽象性函式接口的实现细节部分包装.隐藏起来的方法. 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问.要访问该类的代码和数据,必须通 ...
- JAVA笔记7__接口应用/Object类/简单工厂模式/静态代理模式/适配器模式
/** * 接口应用 */ public class Main { public static void main(String[] args) { Person p = new Person(&qu ...
- Java中是否可以调用一个类中的main方法?
前几天面试的时候,被问到在Java中是否可以调用一个类中的main方法?回来测试了下,答案是可以!代码如下: main1中调用main2的主方法 package org.fiu.test; impor ...
随机推荐
- Oracle 物理体系
Oracle 物理体系 Oracle 物理体系 问题 参考资料 Oracle 物理体系 PGA:program global area ,私有不共享内存. PGA起到预处理的作用: ...
- iOS KVO详解
一.KVO 是什么? KVO 是 Objective-C 对观察者设计模式的一种实现.[另外一种是:通知机制(notification),详情参考:iOS 趣谈设计模式——通知]: KVO 提供一种机 ...
- python系列四:Python3字符串
#!/usr/bin/python #Python3 字符串#可以截取字符串的一部分并与其他字段拼接var1 = 'Hello World!'print ("已更新字符串 : ", ...
- $(document).ready() $(window).load 及js的window.onload
1.$(document).ready() 简写为$(function(){}) DOM结构绘制完成执行,而无需等到图片或其他媒体下载完毕. 2.$(window).load 在有时候确实我们有需 ...
- Web 框架本质解析
一 Web框架本质 1. 自己开发Web框架 - socket - http协议 - HTML知识 - 数据库(pymysql,SQLAlchemy) HTTP: 无状态.短连接 TCP: 不断开 ...
- 斯坦福大学Andrew Ng - 机器学习笔记(3) -- 神经网络模型
大概用了一个月,Andrew Ng老师的机器学习视频断断续续看完了,以下是个人学习笔记,入门级别,权当总结.笔记难免有遗漏和误解,欢迎讨论. 鸣谢:中国海洋大学黄海广博士提供课程视频和个人笔记,在此深 ...
- android studio DELETE_FAILED_INTERNAL_ERROR Error while Installing APKs
DELETE_FAILED_INTERNAL_ERROR Error while Installing APKs 参考https://stackoverflow.com/questions/38892 ...
- VIMTUTOR 1.7中文版
文章来源:http://waterxfire.blog.hexun.com/4106986_d.html =============================================== ...
- django路由系统之反向生成url
from niubin.service import v1 from django.urls import reverse from django.shortcuts import HttpRespo ...
- 通过ip得到所在城市,以及城市所在经纬度坐标(监控系统中用的该代码,小航哥)
监控系统中就是利用的该段代码,实现通过ip得到所在城市,以及城市所在经纬度坐标,最后得以利用echarts实现模拟迁移的效果 api官方介绍: http://lbsyun.baidu.com/inde ...