你知道抽象类和接口吗?

抽象类

 What

  抽象类通常代表一个抽象概念,它提供一个继承的出发点,当设计一个新的抽象类时,一定是用来继承的。

动物是一个抽象类,猫,狗都可以继承动物这个抽象类,现在又有一个哈巴狗想继承狗这个类,就需要把狗这个类变为抽象类。

 注意

  1.抽象类不能实例化:“动物”实例化没有意义;
  2.抽象方法是必须被子类重写的方法;
  3.如果类中包含抽象方法,那么类必须定义为抽象类;
  4.让抽象类拥有尽可能多的代码,拥有尽可能少的数据;

接口

 What

  接口是把隐式公共方法和属性组合起来,以封装特定功能的一个集合。一旦类实现了接口,类就可以支持接口所指定的所有属性和成员。

 注意

  1.接口不能实例化,不能有构造方法和字段;
  2.不能有修饰符,方法没有实体;
  3.不能声明虚拟的或静态的;
  4.实现接口的类必须实现接口中的所有方法和属性;
  5.一个类可以支持多个接口,多个类也可以支持相同的接口;

区别

  1.类是对对象的抽象,抽象类是对类的抽象,接口是对行为的抽象;

接口是对类的局部(行为)进行的抽象,抽象类是对类整体(字段,属性,方法)的抽象

  2.如果行为跨越不同类的对象,可使用接口;对于一些相似的类的对象,用继承抽象类;

猫,狗都是动物,让他们去继承动物这个抽象类,而飞机,麻雀,超人是不相干的类,叮当和孙悟空也是不相干的类,但是又有共同点,前三个会飞,后两个会变东西,所以让他们去实现相同的接口

  3.抽象类是从子类中发现了公共的东西,泛化出子类,然后子类继承父类,而接口是根本不知子类的存在,方法如何实现还不确认;

先有一个猫类,再有一个狗类,观察发现他们的类似之处,泛化出Animal类,Animal就是抽象类;而接口是,运动会的组办方,策划了很多比赛项目,但是不知到会有哪些动物来参加比赛,他们的实现行为也不得而知。所以抽象类是自底而上抽象出来的,而接口是自顶向下设计出来的

猜你喜欢

转载自blog.csdn.net/m0_37508531/article/details/80723343