黑马程序员技术博客-------抽象类和接口


 

抽象类

抽象类:当一个类来描述事物的时候没有足够的信息来描述这个事物,这个类就叫做抽象类,需要使用abstract修饰符修饰,抽象类不可以被实例化。抽象类必须有其子类重写所有的抽象方法后才可以被实例化,否则这个子类还是抽象类。抽象类可以拥有普通类中的所有类型成员,抽象类的存在在于被继承。

抽象方法:抽象类中的方法只有声明没有实现的时候,该方法就是抽象方法,需要被abstract修饰,抽象方法必须被定义在抽象类中,这个类也必须被abstract修饰。抽象方法不能使用private final static 来修饰,因为抽象方法在于被重写。

抽象方法在于约束和规定可实例化的子类。

问题1.抽象类中有构造方法吗?

      有,用于给子类对象进行初始化。

问题2.抽象类中可以不定义抽象方法吗?

      可以,但很少见,目的就是不让这个类创建对象。通常这个类中的方法有方法体,但没有内容。

问题3.abstract关键字不可以和哪些关键字共存?

      private,因为抽象方法会被子类重写,如过私有,则子类继承不到父类的抽象方法,就不能被重写。

      static,因为抽象方法不能被实例化,不能调用抽象方法,当使用static的时候可以直接用类名来调用,二者相违背。

      final,用final修饰的方法是最终方法,不能被重写,而抽象方法的存在目的在于被重写,二者相违背。

问题4.抽象类和一般类的异同点?

     相同点:抽象类和一般类都是用来描述事物的,都在内部定义了成员。

     不同点:一般类有租够的信息描述事物,而抽象类描述事物的信息不足

             一般类中不能定义抽象方法,只能定义非抽象方法,抽象类可以定义抽象方法,也可以定义非抽象方法。

             一般类可以被实例化,抽象类不可以被实例化。

问题5.抽象类一定是父类吗?

              是的,因为抽象类需要子类对其重写抽象方法后子类才可以被实例化,所以抽象类一定是父类。

 

接口

当一个抽象类中的方法都是抽象的时候,就可以将该抽象类用接口形式来表示。定义接口的关键字是interface

接口中的常见的成员:这些成员都有固定的修饰符。

  1. 全局常量:public static final
  2. 抽象方法:public abstract

接口中的成员都是public权限

类与类之间是继承关系,类与接口之间是实现关系,实现接口的关键字是implements,接口不可以被实例化,只有实现了接口的子类并重写了接口的所有的抽象方法后才可以被实例化,否则这个子类就是一个抽象类。

一个类可以实现多个接口。一个类在继承另一个类的同时还可以实现多个接口。

接口的出现避免了单继承的局限性

类与类之间是继承的关系,类与接口之间是实现的关系,接口与接口之间是继承的关系,并且一个接口可以继承多个接口。

 

接口和抽象类的相同点:都是不断向上抽取而来的

接口和抽象类的不同点:1.抽象类需要被继承,而且只能单继承。接口需要被实现,而且可以多实现。

                      2.抽象类中可以定义抽象方法和非抽象方法,子类继承后可以直接使用非抽象方法。接口中只能定义抽象方法,必须由子类去实现

                      3.抽象类的继承是is a 关系,在定义该体系的基本共性内容。接口的实现是like a关系,在定义该体系的额外功能

转载于:https://www.cnblogs.com/CharType/p/3583613.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值