漫谈abstract(抽象)与interface(接口)
在说抽象与接口之前,先谈谈个人在开发中的一些感觉,其实如果一个程序中如果没有用到接口和抽象也可以将程序完整的写下来,这对于我们来说只是个初学者。我曾在一个公司的招聘上看到任职要求第一位的是需要会熟悉运用接口与抽象类,以方便以后升级维护和代码的交接。好的闲话少说直接上干货。
抽象(abstract):抽象翻译出来是抽象,摘要,大要。从字面很好理解就是对事物的模糊的描叙。具体到代码中就是在一个类中需要对子类往上的提取。得到一些共性的东西可以有抽象方法和非抽象方法这个是根据一些具体需要。比如
public abstract class animal {
public abstract void eat(); //抽象方法,抽象类的子类在类中必须实现抽象类中的抽象方法
public void kanjia(){
//功能
}
}
该类中至少一个抽象方法。注意的是放入需要定义为公共的不然无法被重写。
接口(interface):如果只是一个初期理解可以理解为特殊的抽象类,只有抽象方法的类可以被定义为抽象。注意:这个只是初期理解。
public abstract class animal {
public abstract void eat(); //抽象方法,抽象类的子类在类中必须实现抽象类中的抽象方法
}
下面就该具体说说共性和特点
共性:1,都是程序对外暴露的规则,如果用这种定义的类就需要按照该类的规则使用。
2,都不可以直接new对象,需要对其方法重写后才可以建立对象。
3,都是程序向上抽取的一种体现,也是程序多态的体现。
4,都可以提高程序的扩招性和程序的可维护性。
特点:1,刚才说接口是特殊的抽象实际是抽象倾向于对类的描述,接口倾向于对类功能的体现。
2,在于类的关系中,接口是implement实现关系且java中接口是可以多实现的。抽象类与类是extend关系。
3.接口与接口则是extend的关于。
如果在程序中很少用到这个就需要我们平时去注意去理解。PS:如果有不足,请指教。