接口中有一个抽象类,请问继承这个接口时,需要实现这个抽象类吗?

接口中有一个抽象类,请问继承这个接口时,需要实现这个抽象类吗?

2个回答

调用的时候初始化实现应用就行,只是集成不引用,重写添加方法的话不需要

首先,你的需求定义有问题,接口中怎么会有抽象类呢?接口定义中都是public的公共方法声明,而不需要实现;
其次,实现某个接口的类如果是一个抽象类的话,那么它就可以不必实现接口方法,而交给这个抽象类的子类去实现的。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
一个DaoImpl类,既想通过实现IDao接口达到通过接口调用的目的,又想通过继承抽象类,使用父类的通用方法。应该怎么做?
1、IDao.java ``` package cn.test; public interface IDao { public void Query(); } ``` 2、GeneralDao.java ``` package cn.test; public abstract class GeneralDao { public void generalDaoMethod() { System.out.println("调用generalDaoMethod方法"); } } ``` 3、DaoImpl.java ``` package cn.test; public class DaoImpl extends GeneralDao implements IDao { @Override public void Query() { System.out.println("调用接口的个性化查询方法"); } } ``` 4、我能想到的就是强转,但觉得不好。 App.java ``` package cn.test; public class App { public static void main(String[] args) { IDao dao=new DaoImpl(); dao.Query(); ((GeneralDao)dao).generalDaoMethod(); } } ``` 5、输出 ``` 调用接口的个性化查询方法 调用generalDaoMethod方法 ``` 有没有其他更好的方法可以实现既可通过接口调用,又可以使用父类的方法?
关于“赖倒置原则:高层模块不应该依赖低层模块,二者都应该依赖其抽象”这句话,我的理解对么?
设计模式六大原则之一:赖倒置原则:高层模块不应该依赖低层模块,二者都应该依赖其抽象。 往往在指导项目设计中,经常在高层模块中定义好接口,在低层模块需要做以下两步: 1. 继承接口,实现方法。 2. 获取高层模块的对象实例。 3. 创建继承接口的类的实例,然后设置高层模块实例对象中的引用。 但是,一个接口的引用只能指向一个具体子类对象实例,然而有一些情况是,子类可能有0个或多个模块都需要继承这个接口,这就需要很多类里面都需要创建addXXXListener的方法。 C#语言有事件,可能观察者模式泛滥,但是像Java或C++,难道在很多项目中都需要依赖监听器、信号和槽之类的功能才能做类的设计么?这种设计是良好的设计?还是我对这设计模式理解的有问题? 希望有经验的除了回答问题外,可以借此话题,说说自己的理解,也不枉我花出去的C币。
关于抽象 和 接口在java项目结构中的一些问题,有图。
mapper:接口baseMapper(公共接口),接口UserMapper继承baseMapper(其他接口); service:接口baseService(公共接口),接口UserService继承baseService(其他接口); serviceImpl:抽象baseServiceImpl,接口UserServiceImpl 实现 baseService,UserService 今天看到一个JAVA项目结构是这种,所有有点不明白,是否有baseService存在的必要性,如下图 ![图片说明](https://img-ask.csdn.net/upload/201907/14/1563051335_115732.jpg) __________________________________ 以下为2019-7-17作者补充。 经过测试后,结构重新优化,如下图: ![图片说明](https://img-ask.csdn.net/upload/201907/17/1563355451_359451.png) BaseService 为 通用接口; BaseServiceImpl 为BaseService的实现类,BaseServiceImpl定义为抽象类。 UserService 继承了 BaseService 接口,BaseService定义为接口; UserServiceImpl 继承了(extends)BaseServiceImpl,且 implements UserService接口;
好多种回答,大神给统一下呗
下面有关接口的说法中正确的是( )。 A.接口与抽象类是相同的概念 B.实现一个接口必须实现接口的所有方法 C.接口之间不能有继承关系 D.一个类可实现多个接口
关于‘abstract class和interface有什么区别’这个问题的一些疑问?
1、抽象类里面可以用普通方法,而接口中的方法全部都是抽象的; 2、抽象类中可以有非 public static final修饰的属性,接口中的属性都是public static final修饰的 3、抽象类有构造方法,接口没有构造方法 4、抽象类中可以有静态方法,接口中不能有静态方法 5、类与抽象类的关系是继承,而且是单继承。类与接口的关系是实现,而且是多实现。 6、抽象类由abstract class声明,接口由interface声明 7、子类与它继承的抽象类的关系是 B is A,实现类与它所实现的接口的关系是 B like A 8、在应用范围上来说,接口往往在程序设计的时候,用来定义程序模块的功能,方便各模块协同工作;抽象类是对相似类进行抽象,形成一个抽象的父类可供重用! 以上是问题的答案,哪位可以解释一下,每一条答案背后的含义,设计者为什么要这么做?
Java 的一个关于接口和继承方面的基础问题的疑惑,往大佬解答。
先看下我的代码 动物抽象类 ``` abstract class Animal { public abstract void drink(); public abstract void move(String destination); } ``` 哺乳动物抽象类继承动物类 ``` abstract class Mammal extends Animal{ // ```哺乳动物类 } ``` 爬行动物类 ``` abstract class Reptitel extends Animal {//爬行动物类 } ``` 老虎类 ``` public class Tiger extends Mammal implements Hunt{ String name = "Tiger"; public void move(String destination){ System.out.println("Tiger move to "+destination+"."); } public void drink(){ System.out.println("Tiger have drunk."); } public void hunt(Animal animal){ System.out.println("Tiger has eaten "+animal); } public String getName() { return name; } } ``` 蛇类 ``` public class Snake extends Reptitel implements Hunt{ String name = "Snake"; public void move(String destination){ System.out.println("Snake move to "+destination+"."); } public void drink(){ System.out.println("Snake have drunk."); } public void hunt (Animal animal){ System.out.println("Snake has eaten "+animal); } public String getName() { return name; } } ``` 兔子类 ``` public class Rabit extends Mammal { String name = "Rabit"; public void move(String destination){ System.out.println("Rabit move to "+destination+"."); } public void drink(){ System.out.println("Rabit have drunk."); } public String getName() { return name; } } ``` Hunt接口 ``` interface Hunt extends Animal{ public void hunt(Animal animal); } ``` 农夫类 ``` public class Famer { String name = "famer"; public void bringWater(String destination){ System.out.println("Famer bring a bottel of watter to "+destination); } public void feedWater(Animal animal,String destination){ this.bringWater(destination); animal.move(destination); animal.drink(); System.out.println(animal+" has been fed by famer\n"); } public void feedWaterThreePlaces(){ Animal tiger = new Tiger(); Animal snake = new Snake(); Animal rabit = new Rabit(); Famer famer = new Famer(); famer.feedWater(tiger ,"room"); famer.feedWater(snake,"livingroom"); famer.feedWater(rabit,"river"); } public void bringAnimal(Animal animal,String destination){ System.out.println("Famer brings "+animal+" to "+destination); } //这个feedAnimal我写不出来,希望大佬解答。 //我想同这个方法完成农夫给肉食性动物喂食 //1.农夫将食物带到进食房间 //2.食肉性动物移动到进食房间 //3.肉食性动物用hunt方法完成进食 public void feedAnimal(Animal food,Animal hunter){ this.bringAnimal(food,"feeding room"); hunter.move("feeding room"); //以下是我遇到的难题,我的hunter无法调用hunt方法,我觉得可能是 //因为animal中有tiger rabit snake但是只有tiger和snake拥有hunt方法 //所以hunter不能调用hunt方法 hunter.hunt(food); //这行代码被报错 } } ``` Test以上方法 ``` public class Run { public static void main(String[] args) { //用于执行famer的喂食方法测试 } } ```
关于接口的理解,还有哪些不足的地方。。
1. 是这样,楼主本人刚学Java的时候,看到抽象类与接口,感觉很不理解,时常为两者的业务场景纠缠不清. 2. 后来在网上百度,七嘴八舌,要么只是说一些语法上的不同,要么就是提一些不痛不痒的例子,比如什么学生类,老师类实现人的某项功能balabala... 3. 其实我个人觉得刚开始还是从代码层面上说话更能让人理解。 4. 关于抽象类,在实际应用中我更喜欢把它当做“模板”来使用,抽象类的好处就是,一半事情,父类替你做了,OK,子类直接调取;另一半事情留给子类自己去实现,相比较于接口,它的子类不太适合作为一个参数进行传递。 5. 关于接口,什么称呼都有。。。 6. 我个人理解的接口是这样: * 提高某个数据类更“灵活”,如果把抽象类的继承关系比作垂直,那么接口就相当于把这个数据类型在水平方向进行延展; * 可以直接使用此匿名实例,或者用句柄接收此实例作为参数进入方法栈; * 使某个两或者多个个平行关系的实现类产生关联; * 解耦,这意味着啥,通过接口,可以减少重复代码,越是越大的项目越是能体现出接口的威力。 * 关于接口的嵌套,这个情况有,但是不多,楼主也只是在为数不多项目里发现过一次。 * 抽象类与接口各有各的好处,反正没啥不能new的,还是看需求走向,与业务原则。 7. 最后楼主可能在某些点说的不是很完全,请大家多多指教,献丑了。。。
java interface基本问题
我是初学者,请教大家一个问题: 现在写程序的时候,老师会经常说我们继承这个接口或者实现接口什么的,问题是 接口不是抽象类吗,它里面的方法不都是抽象方法(我理解就是只有一个方法名,里面没有任何功能) 这样的方法不就相当于空吗?我们这么调用有什么用呢? 我的理解哪里有问题,希望大家帮我一下
新手关于java的问题--
有点搞不懂什么时候方法放在父类 什么时候放在接口中, 比如说有一个game父类 三种game子类,每个game有不同的比赛方法(compete方法),那么这个抽象的compete方法应该放在接口中去实现还是放在父类中去继承?
关于接口interface的一些小总结、问题。请求解答和更正。
1,有的接口,加上个 实现就能用里面的方法,不用自己去实现。这大概是个什么原理? A继承B,B实现C的过程,在这个过程中,A成为了B的子类,B可以替子类实现C接口的某些方法,如果B没有实现,那么就需要A来实现 2,接口和抽象类是抽象类型定义的两种机制,其赋予java强大的面向对象能力,为甚? (封装,继承,多态,,,,抽象) 3,合作,类似协议,如果针对一个比较庞大的项目,架构师可以李青业务定义接口,由别人去实 现。 定义好一个接口,文档(实现类的命名规范等,)给别人去开发、实现。 4,扩展性,需求变更后,通过接口去改或新建其实现类, 然后,从新引用实现接口的类 5,解耦,,具体是怎么达到解耦的效果的? 6,招牌,通过接口,快速的指导类的作用、用途等。 7,通过接口能更好的实现对开闭原则,修改的关闭,拓展的开放。 第二条,第五条求解答,其他的如有错误请更正!
一个引用java接口但任何没有实现的源码解读
有个类一直无法理解,情况是这样的,该类有个内部接口,确定没有任何实现方法,怀疑代码不全需要自己补充,请高手支招确定下,第一次发帖,望大家捧捧场,谢谢! PresenceEventDispatcher继承的一个引用自己内部接口的抽象类,有“<”刚被csdn隐藏了 public class PresenceEventDispatcher extends EventDispatcher\<PresenceEventDispatcher.PresenceEventListener\> { private final PresenceWorker presenceWorker = new PresenceWorker(); public void availableSession(ClientSession session) { if (!listeners.isEmpty()) { for (PresenceEventListener listener : listeners) { listener.availableSession(session); } } presenceChanged(session); } public void unavailableSession(ClientSession session) { if (!listeners.isEmpty()) { for (PresenceEventListener listener : listeners) { listener.unavailableSession(session); } } presenceChanged(session); } public void presenceChanged(ClientSession session) { if (!listeners.isEmpty()) { for (PresenceEventListener listener : listeners) { listener.presenceChanged(session, session.getPresence()); } } presenceWorker.push(session.getPresence()); } public interface PresenceEventListener extends EventListener { public void availableSession(ClientSession session); public void unavailableSession(ClientSession session); public void presenceChanged(ClientSession session, Presence presence); } } public abstract class EventDispatcher<T> { protected List<T> listeners = new CopyOnWriteArrayList<T>(); /** * Registers a listener to receive events. * * @param listener the listener. */ public void addListener(T listener) { if (listener == null) { throw new NullPointerException(); } listeners.add(listener); } /** * Unregisters a listener to receive events. * * @param listener the listener. */ public void removeListener(T listener) { listeners.remove(listener); } }
Java图形类是如何绘图的
如题,java图形库为awt和swing,这些类库中元件均为继承关系,基础类分别是Component与JComponent,当我们继承自这些组件的类运行时,桌面便开始绘制并形成图形,关于这个绘图的“动作”在类库中我一直没找到,在component中有个Graphics有关的变量,似乎是做边框的,而Graphics只是个接口,并没有作图“动作”的实现,后面所有的组件也没有发现对这个接口的实现。还有一个Piont类,继承自Piont2D,似乎是描点的,里面有想x,y坐标的成员变量,但也同样没有画的“动作”,前后都没找到具体实现。 抽象类Graphics里面有个drawLine()方法,应该是画直线的,里面各种坐标的定义也都是全的,这个drawLine()方法依然无定义,而且前后各组件中再也没找到这个方法的实现。 只有两种原因:1,的确存在一个画图的“动作”,应该是一种方法。2,不存在这个动作,编译器在读取到这些点啊线啊的接口类的时候会“明白”我们的意思,直接调用我们在这些类中的想x,y等坐标来绘制图形。 那么,如果是情况1,请问这个动作方法在哪呢,我一个都没找到。如果是情况2,那么这个编译器难道会侦听么,一单发现这些点啊线的类参数有变化,接开始执行画图操作。 请问大牛图形的”画“究竟是如何实现的呢。
关于Object类的一些困惑
在java中,Object为所有类的父类,而接口和抽象类都是特殊的类,但是现实是一个接口是不能继承与任何一个类的,有哪位高手可以帮忙解答一下。
关于代码如何组织的疑惑
刚入行,接触的项目不多,第一次接触的一个SSH项目是这样分层的 抽象一个Dao接口,这个接口包含对象基本增删改查,然后提供一个Dao实现(比如叫Support),至此Dao层结束,然后业务层接口继承Dao接口,业务层继承Support。然后每一个模块一个Action.这样做一个好处就是直接通用一个Dao,不用每个业务类都写一个Dao。但坏处就是因为涉及到泛型,每个个数据表都要对应一个业务对象。如果数据库中有很多的表,就会有很多业务接口业务实现。 具体结构看贴图: 另一个SSH项目是这样分的: 每个模块各一个增删改查Dao加Dao实现,Dao之前互相交错。 问题:个人觉得这两种设计都不好,那么该如何设计,还有,这两个项目中的业务层代码跟Dao层代码感觉都差不多,比如有一个业务层的代码是这样的: public void deleteIp(Filterip ip){ deleteDao.deleteIp(ip); } public void deleteDev(Devinfo devinfo){ deleteDao.deleteDev(devinfo); } public void deleteBackup(Backup bp){ deleteDao.deleteBackup(bp); } public void deleteDevdetail(Devdetail devdetail){ deleteDao.deleteDevdetail(devdetail); } 那这样分逻辑层有什么意义呢,然后最繁重的是action,判断都写在Action方法里面,导致一个方法少则一百多行,多则几百行,一个类上千行。
Java编程思想第四版7.2初始化基类
当创建了一个导出类的对象时,该对象包 含了一个基类的子对象。这个子对象与 你用基类直接创建的对象是一样的。二者区别 在于,后者来自于外部,而基类的子对象被包 装在导出类对象内部。 在看复用类的时候,这一部分感觉不能理解, 创建子对象的时候,会同步创建父类对象吗? 如果父类对象是抽象类或者接口呢?有人解答一下吗?
【求解】SPRING namedParameterJdbcTemplate为什么返回null?
使用spring jdbc 首先。 dataSource 用的C3P0 , 测试没有问题。 其次是DefaultService接口 public interface DefaultService { } 以及DefaultServiceImpl public class DefaultServiceImpl extends NamedParameterJdbcDaoSupport implements DefaultService{ } 我在spring中声明了这个类 <bean id="defaultService" class="x.x.x.DefaultServiceImpl"> <property name="dataSource" ref="dataSource"></property> </bean> 然后我还有一个类是BaseServiceImpl public abstract class BaseServiceImpl { private DefaultService defaultService; /** * @return the defaultService */ public DefaultService getDefaultService () { return defaultService; } /** * @param defaultService the defaultService to set */ public void setDefaultService (DefaultService defaultService) { this.defaultService= defaultService; } } 在spring中配置 <bean id="serviceBase" abstract="true"> <property name="defaultService" ref="defaultService" /> </bean> ---------------------------------------------------------------------------------------------- 接下来是业务SERVICE 有一个TestService public interface TestService { public List findDataList(Map params); } 以及他的实现类, 继承了BaseServiceImpl public class TestServiceImpl extends BaseServiceImpl implements TestService { /** * @descrption */ @Override public List findDataList(Map params) { String sql = "SELECT * FROM USERMARK WHERE ID = :id"; return this.getNamedParameterJdbcTemplate().query(sql, params, new QueryRowMapper()); } } 然后在spring中配置了 <bean id="testService" autowire="byName" parent="serviceBase" class="x.x.x.TestServiceImpl"/> ------ 在action里注入了这个testService, 没有问题注入成功, 进入到service里的findDataList方法了。 但是this.getNamedParameterJdbcTemplate() 返回为null 报了空指针。。 namedParameterJdbcTemplate在NamedParameterJdbcDaoSupport类中注入。 首先要说明的是dataSource没有问题, 其次是和BaseServceImpl是个抽象类也没有关系。 在线求教。。
新手入手开发Android应用需要多久?
Q:学习android需要哪些基础?   A:学习Android一定要有Java基础,最差也要类似Java的其他面对像对象语言的基础。很多朋友从来没有搞过编程,听说Android能赚钱,就疯了一样冲过来要学习。这明显是不靠谱的,甚至有的朋友一个字母一个字母的按照我的例子去敲代码,然后非常努力的把代码背下来。像背英文单词一样的背代码,编程学成这个样子,还真是让小生佩服啊!不管怎样,你最少也要掌握Java语言的如下知识点才能够开始学Android: a)Java基本数据类型及其特点 b)Java分支语句和循环语句的使用 c)类和对象的创建和使用方法 d)函数的使用 e)抽象类和接口 f)继承和实现 g)对象的多态性 h)包和访问权限 i)异常的处理 j)类集框架 k)eclipse的基本用法 刚才看了一个论坛的以上问题后,突然自己有个疑问,请问各位前辈,要是我以上的基础我都很熟练的掌握了,想入手Android方向的开发一般需要多久呢?我是广西的一个本科应届毕业生,今年7月我就可以毕业了,在大学,我主要便向就是java开发,自学掌握了jsp以及ssh2的相关基础,做过一些简单的web应用开发。恳请这里的前辈给我指点指点,谢谢!
java开发聊天系统的问题(毕业设计)
我打算用Java编写一个类似QQ的软件,包括PC的客户端,网站,服务器端,同时还有手机的wap网站和java版,我已经设计了一段时间,现开始从底层编写代码,用Hibernate和Spring对MySQL数据库的表和操作进行封装;通讯采用队列的方式,无论是服务器还是客户端,有收发两个队列进行控制,发送和接收的都是Message对象。登陆之后有一个tcp连接始终与服务器保持连接,直到离线或退出,其余的消息采用UDP的方式进行通讯,我将客户端的请求都封装在不同的Request类中,比如OnlineRequest,服务器端的回复都封装在不同的但相对应的Response的类中,比如OnlineResponse,同时有处理相应Request和Response的类,比如OnlineRequestMgr,OnlineResponseMgr等,Request和Response分别是不同的抽象类,但都继承自Message接口,通讯类Communication负责初始化TCP连接和收发UDP包,将UDP包中的Message放入相应的队列。一般来说Request由Response对其进行确认,但对于特殊情况,比如由服务器直接发起的Response,比如被添加好友时的确认信息,需要有一个MessageACK类来对其确认。这些协议的加载和处理都是动态的,只要有相应的class文件就可以自动加载并处理,这样可扩充性就比较好。在安全方面,我想的是在用户建立TCP连接后,先将用户的IP地址和TCP端口号记录下来,然后再根据之后发送的UDP包:LoginRequest,将UDP端口也记录下来,这样就完成了用户ID与IP地址,TCP,UDP端口的绑定,服务器将拒绝为同一个ID但其余信息不同的主机提供服务。目前底层的设计和代码编写就到这里,我想问的问题是:我的思路有没有比较严重的问题,目前聊天系统的整体架构是什么?我编写的协议的思路是否正确,可行?我感觉服务器端的压力会比较大,主要是接受连接,解析Request和查询数据库,有没有提高效率的方法?如果网站需要用到这些底层组件,应该怎么复用,采用EJB吗?Hibernate是轻量级的数据库持久层框架,能承受多少压力?对于聊天系统应该考虑的安全问题,有什么好的建议?Java对于开发语音和视频的支持怎么样,能否达到QQ的水平?另外要说明的是我并非开发商用软件,编写这个软件的目的是为了学习,本人还是在校学生,对Java很感兴趣^_^。希望大家不吝赐教
java的多态会极大影响速度吗?
给出以下代码和运行结果,盼各位指点。。。。。。 对于接口A,抽象类B,一般类C,各自只有一个共同的方法,通过get()方法返回一个值 设计另外三个类:AA实现接口A,BB继承抽象类B,CC继承一般类C 设计test()方法,初始化三个类后,执行各个对象中的get()方法1000000000次,在形如B b = new BB()的前提下,通过b.get()样式运行后时间消耗远远大于通过((BB)b).get()循环的时间消耗,其他几个类似,代码附下 哪位能给出个比较详细的解释吗? [code="java"]package cn.edu.uestc.dmlab.clusterers.dbscan; public class InheritancePerformanceTest { interface A { public int get(); } abstract class B { public abstract int get(); } class C { public int get() {return 2;} } class AA implements A { @Override public int get() {return 1;} } class BB extends B { @Override public int get() {return 1;} } class CC extends C { @Override public int get() {return 1;} } public void test() { A a = new AA(); B b = new BB(); C c = new CC(); int s = 1000000000; long t =System.currentTimeMillis(); System.out.println("--start--"); for (int i = 0; i < s; i++) { get(); } System.out.println("this: \t" + (System.currentTimeMillis()-t)); System.out.println("\n- polymorphism -----------"); t =System.currentTimeMillis();; for (int i = 0; i < s; i++) { a.get(); } System.out.println("implements interface: \t"+(System.currentTimeMillis()-t)); t = System.currentTimeMillis(); for (int i = 0; i < s; i++) { b.get(); } System.out.println("extends abstract: \t"+ (System.currentTimeMillis()-t)); t = System.currentTimeMillis(); for (int i = 0; i < s; i++) { c.get(); } System.out.println("extends class: \t"+ (System.currentTimeMillis()-t)); System.out.println("\n-no polymorphism -----------"); t = System.currentTimeMillis(); for (int i = 0; i < s; i++) { ((AA)a).get(); } System.out.println("implements interface: \t"+ (System.currentTimeMillis()-t)); t = System.currentTimeMillis(); for (int i = 0; i < s; i++) { ((BB)b).get(); } System.out.println("extends abstract: \t"+ (System.currentTimeMillis()-t)); t = System.currentTimeMillis(); for (int i = 0; i < s; i++) { ((CC)c).get(); } System.out.println("extends class: \t"+ (System.currentTimeMillis()-t)); System.out.println("\n--end--"); } public int get() { return 1; } public static void main(String[] args) { InheritancePerformanceTest a = new InheritancePerformanceTest(); a.test(); } } [/code] [b]问题补充:[/b] to jansel: 调换过了也一样,由于结果不在一个数量级,所以先后顺序并不会影响多少。谢谢回答。 [b]问题补充:[/b] 另外,这里并不是突发奇想来测试这个,确实是在编写一个算法的时候感觉到了时间消耗的巨大差军,才专门做这个试验以求根本性解释问题,指导试验,请各位指点。谢谢! [b]问题补充:[/b] to qqxiaodi: 请问需要加什么样的“清理语句”呢?谢谢! to lovewhzlq: 不好意思,我没从那些文章里看出关于这段代码问题的所以然来,麻烦你能不能解释下我的测试为什么有问题呢?谢谢! [b]问题补充:[/b] 另外,整个实验就在于使用b.get()方法和((BB)b).get()方法的区别,代码顺序可以随便变换,也可以分成两个来测试 由于使用b.get()时间消耗和使用((BB)b).get()差距在5倍以上,所以我觉得跟机器的关系不大,由代码来看,跟垃圾收集也应该没多大关系。 [b]问题补充:[/b] to walsh: 很奇怪你的测试结果,我当然不会随便测试一下就拿上来请教大家,而是分别在10多台机子上测试了这个程序,无论机子配置好坏,得到的结果都是类似如下的结果(比例类似,绝对值不同) [quote]--start-- this: 1812 - polymorphism ----------- implements interface: 1782 extends abstract: 8859 extends class: 8578 -no polymorphism ----------- implements interface: 1328 extends abstract: 1344 extends class: 1313 --end--[/quote] 另外,就算你这里关于B的结果不能说明问题,那C的又如何解释呢,甚至A的也不符合你的说法呢? [b]问题补充:[/b] to walsh: 不好意思,我没有不相信你的意思,但是我又在8台不同机子上做了同样的测试,整个实验过程近20台机子的测试结果仍然和我上述的结果差不多,我真的不能重复你的实验结果。 整个过程中我最关心的只是b.get()方法和((BB)b).get(),c.get()方法消耗时间多一些可以理解,我不理解的只是b.get()这个抽象方法在继承以后为什么会和c.get()类似。既然你不能重复我的实验结果,而我也不能重复你的实验结果,这个。。。。。难道还有什么其他的问题导致的这个问题啊???看来我还需要继续等待以及测试一下。
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
C语言荣获2019年度最佳编程语言
关注、星标公众号,不错过精彩内容作者:黄工公众号:strongerHuang近日,TIOBE官方发布了2020年1月编程语言排行榜单。我在前面给过一篇文章《2019年11月C语言接近Ja...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
一份王者荣耀的英雄数据报告
咪哥杂谈本篇阅读时间约为 6 分钟。1前言前一阵写了关于王者的一些系列文章,从数据的获取到数据清洗,数据落地,都是为了本篇的铺垫。今天来实现一下,看看不同维度得到的结论。2环境准备本次实...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
【蘑菇街技术部年会】程序员与女神共舞,鼻血再次没止住。(文末内推)
蘑菇街技术部的年会,别开生面,一样全是美女。
那个在阿里养猪的工程师,5年了……
简介: 在阿里,走过1825天,没有趴下,依旧斗志满满,被称为“五年陈”。他们会被授予一枚戒指,过程就叫做“授戒仪式”。今天,咱们听听阿里的那些“五年陈”们的故事。 下一个五年,猪圈见! 我就是那个在养猪场里敲代码的工程师,一年多前我和20位工程师去了四川的猪场,出发前总架构师慷慨激昂的说:同学们,中国的养猪产业将因为我们而改变。但到了猪场,发现根本不是那么回事:要个WIFI,没有;...
为什么程序猿都不愿意去外包?
分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助
Java校招入职华为,半年后我跑路了
何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...
立即提问