你知道抽象类和接口吗?

抽象类

 What

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

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

 注意

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

接口

 What

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

 注意

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

区别

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

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

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

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

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

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

抽象类普通类是面向对象编程中的两个概念。 抽象类是一个不能被实例化的类,它只能作为其他类的基类来继承使用。抽象类中可以包含普通方法抽象方法。普通方法有具体的实现,而抽象方法没有实现,只有声明。任何继承自抽象类的子类都必须实现抽象类中的所有抽象方法。抽象类可以包含普通属性构造函数,也可以包含抽象属性。 普通类是可以直接实例化的类,它可以包含方法、属性构造函数。普通类中的方法都有具体的实现,不需要子类再去实现。 接口是一种规范或者契约,它定义了一组方法属性,但没有具体的实现。接口中的方法都是抽象方法,接口中的属性都是常量。一个类可以实现多个接口,通过实现接口中定义的方法属性来达到接口的要求。 区别: - 抽象类可以有构造函数,而接口不能有构造函数。 - 一个类只能继承一个抽象类,但可以实现多个接口。 - 抽象类中可以包含普通方法抽象方法,而接口中只能包含抽象方法。 - 抽象类可以有属性,而接口只能有常量属性。 - 抽象类可以提供方法的默认实现,而接口不能提供方法的默认实现。 总的来说,抽象类适用于多个子类有共同的属性方法,并且需要强制子类去实现某些方法的情况;而接口适用于多个类需要实现相同的方法属性的情况。
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值