java java面向对象-接口和抽象类的区别

20180406 java java面向对象-接口和抽象类的区别


Interface Graph
{
  //求面积
  Double getArea();


}




//圆
class Circle implements Graph
{
  private Integer r;//半径
  Circle (Integer r)
  {
    this.r = r;
  }


  //求面积
  public Double getArea()
  {
    return 3.14 * r * r;
  }
}








从java8开始,接口中可以定义默认方法,有方法体。
java8的这个改进 颠覆了java之前的很多设计。模板方法设计模式就不再存在了。


java8中还可以定义静态方法。






上面都是一些开胃小菜,本文重点介绍接口和抽象类的区别:


一、相同点:
1)都位于继承的顶端,用于被其他实现或继承。
2)都不能实例化。
3)都可以定义抽象方法,其子类或实现类都必须复写这些抽象方法。


二、区别:


1)接口中没有构造方法,抽象类有构造方法。
2)抽象类可以包含普通方法和抽象方法,接口只能包含抽象方法(这条只针对java8之前说的)。
3)一个类只能继承一个父类(可能是抽象类),即体现单继承关系,而接口是多继承的并且支持一个类实现多个接口(这样就弥补了java的单继承特性)。
4)成员变量:在接口里默认是public static final修饰的,而抽象类的默认的是包访问权限。
5)方法 :在接口里默认是public abstract修饰的,而抽象类的默认的是包访问权限。
6)内部类 :在接口里默认是public static修饰的,而抽象类的默认的是包访问权限。






如果接口和抽象类可以完成相同的功能,那么我们该如何选择呢? 
答:尽量使用接口,要体现面向接口的编程思想。
















































































阅读更多
个人分类: java课程
上一篇java java面向对象-类和类以及类和接口的关系图
下一篇java java面向对象-面向接口编程思想
想对作者说点什么? 我来说一句

java 抽象类接口区别

2013年01月03日 412B 下载

没有更多推荐了,返回首页

关闭
关闭