java面向对象_抽象类和接口

一、抽象类

  1.抽象方法:由abstract修饰、只有定义没有方法体、用一个分号结尾。

  2.抽象类:

    1)包含抽象方法的类必须是抽象类

    2)由abstract修饰

    3)不能被实例化

    4)抽象类如果不被继承,就没有什么意义;一个类继承抽象类,必须重写起抽象方法(除非该类也声明为抽象类)

1 abstract class Shape{  //声明抽象类
2     private double c;
3     public Shape(double c){
4         this.c = c;
5     }    
6     public abstract double area();  //抽象方法
7 }

  3.抽象类的意义

    3.1)父类的意义

      3.1.1)封装所有子类共有的数据和行为

      3.1.2)位所有子类提供一个公共类型

    3.2)包含抽象方法

      为所有子类提供了统一的入口

二、接口

  1)这是一个标准、一个规范;实现了接口就能干某事

  2)只能包含常量和抽象方法

  3)由interface修饰

  4)接口不能被实例化

  5)接口是需要被实现/继承的,实现类/子类,必须重写接口中的所有抽象方法。

1 interface Inter1{
2     void a();
3     void b();//默认为public abstract修饰
4 }
5 
6 class Aoo implement Inter1{   //实现
7     public void a(){...}
8     public void b(){...}
9 }

  6)一个类可以实现多个接口,用逗号隔开;可以又继承又实现,但是要先继承再实现。

  7)接口间可以继承

三、抽象类与接口的区别

  1、成员区别

    (1)抽象类:可以包含——变量、常量;抽象方法、非抽象方法

    (2)接口:只能包含常量、抽象方法

  2、关系区别

    (1)类与类

        继承为单继承

    (2)类与接口

        实现:单实现、多实现

    (3)接口与接口

        继承为 单继承、多继承

   3、设计理念区别

    (1)抽象类:被继承体现的是“is a”的关系。抽象类中定义的是该继承体系共性功能。

    (2)接口:被实现体现的是“like a”的关系。接口中定义的是该继承体系扩展功能。

原文地址:https://www.cnblogs.com/hxliang/p/5465947.html