抽象和接口

本文详细解析了Java中的抽象类和接口的概念,包括抽象方法、抽象类的特点及使用场景,以及接口如何解决Java单继承的局限性。同时对比了抽象类与接口的主要区别。

抽象:是Java的四大特征之一。由此可见,抽象对于Java来说也是相当重要的一个部分。

(What?) 当一个方法没有实现的时候(即来{}都没有),这样的方法被称为抽象方法。

(How?)抽象方法。必须在方法的修饰符当中增加abstract关键字。方法声明的最后必须有;分号结束。当一个类拥有抽象方法的时候,那么这个类就必须被声明为抽象类。抽象类不能产生对象,它的唯一作用就是作为父类被继承。

细节:1、有抽象方法的类一定是抽象类,抽象类不一定有抽象方法(虽然这样语法允许,但这样就会失去设计意义)

   2、抽象类除了可以拥有抽象方法,不能产生对象以外,它的其它部分和一个普通类没有区别。

   3、abstract关键字只能修饰普通方法和类,不能修饰属性和构造。

   4、在设计上,抽象类与子类必须是is a关系,其它和普通类的继承是一样的。

   5、子类继承抽象类,应该实现该抽象类身上所有的抽象方法,否则这个子类也会成为抽象类(要用abstract关键字修饰)。

    抽象类可以继承抽象类,也可以继承实现类。

 

接口:接口的出现就是为了解决Java中继承的缺点(只能单继承,丰富度不够)。

(What?)可以让没有继承关系的类也能共享行为。利用多实现的机制来解决Java中单继承丰富度不够的问题。

(How?)定义接口。接口与类关联(实现接口)。接口继承接口。

    定义接口:把定义类的calss关键字换成interface,访问修饰符只能是public或默认同包。

         属性只能是公共的,静态的常量属性(就算不写这些修饰符,也会默认为公共静态常量)。

        注意:设计接口更关注的是行为的设计(让没有继承关系的类也能共享行为,但各个类又有不同的实现),不是关注属性

         接口没有构造。接口不是用来产生对象,它是用来补充类的定义,接口产生对象的方式:先绑定一个实体类,再由绑定的类去产生一个对象。

         JDK1.7以后,允许接口拥有实现了的方法。但很少有这样的设计。

    类实现接口:使用关键字implements关键字后面跟上接口名。

          如果一个类实现接口,但没有实现接口中的方法(只要有一个抽象方法没有实现),那么这个类就必须是抽象类。

      注意:接口的引用可以指向实现类的对象,但是只能访问到子类对象重写的、定义在接口中的方法。

    接口的继承:接口是可以继承的,而且是多继承。

    接口与抽象类的区别:

    接口中只能包含抽象方法;而抽象类可以包含普通方法。

    接口中不能定义静态方法;而抽象类可以定义静态方法。

    接口中只能定义静态常量属性,不能定义普通属性;而抽象类可以定义普通方法,还能定义静态常量属性。

    接口中没有构造器;而抽象类可以包含构造器(抽象类的构造器不是用来产生对象的,而是让子类调用这些构造器来完成属于抽象类的初始化工作)。

    接口中不包含初始化块;而抽象类可以包含初始化块。

  一个类最多有一个直接父类,包括抽象类;但是一个类可以实现多个接口,通过实现多个接口来弥补Java单继承的不足。

        

         

转载于:https://www.cnblogs.com/vansjun/p/7441925.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值