今天和同事去吃饭的时候,他突然问我知道ios中@class和#import有什么区别,我想了下,觉得@class就是前向引用声明,而#import则相当于指定编译时的链接环境,编译器会根据#import语句来检索代码中的类。
然后我又问他java中为什么有了抽象类,还要有接口。当然我们都知道接口和抽象类之间的区别。但是为什么会有这样的区别呢?这个问题其实是我前段时间看书时想到的。然后我说,接口的存在是为了弥补抽象类中可能遇到的问题,我的意思是说假如没有接口,而抽象类是可以多继承的。那么假如一个类同时继承了两个抽象类,而这两个类中又分别包含了一个完全相同的方法。那么继承这两个抽象类的子类在实现方法时,实现的到底是哪个抽象类中的方法呢?
于是就有了接口,接口中的方法不能包含方法的具体实现,这样就避免了即使一个类同时实现了两个不同的接口,而这两个接口中定义的方法没有具体实现,所以即使方法相同也不会发生冲突的问题。
That's all.今天过了一家外资公司的技术电话面试,比我想象中的简单多了,这几天还要准备一下接下来的真人面试。