java抽象类及接口

抽象类与接口是Java语言中对抽象概念进行定义的两种机制,他们让java更加具有强大的面向对象的能力。

抽象类

简单总结

首先,在面向对象的领域一切都是对象。所有的对象都是通过类来描述的,但是并不能说所有的类都是用来描述对象的,比如,抽象类。这样说起来有点晦涩难懂,举个例子吧,
new Animal();我们都知道这是用来产生一个动物对象,但是这个动物Animal对象具体是什么形态的呢?所以他并不具有一个具体的动物概念,所以他就是一个抽象类。

 需注意的是:
     1、 抽象方法和抽象类都必须使用abstract修饰符来修饰,而且,要记住,抽象方法不能有方法体。
     2、 抽象类不能被实例化,无法用new关键字来调用抽象类的构造器创建抽象类的实例。
     3、只要包含一个抽象方法的抽象类,该方法必须要定义成抽象类,不管是否还包含有其他方法。
     4、抽象类的构造器不能用于创建实例,主要用于被其子类调用。
     5、子类中的抽象方法不能与父类的抽象方法同名。
     6、当使用abstract修饰类时,表明这个类只能被继承
     7、当使用abstract修饰方法时,表明这个方法必须由子类提供实现(重写)。
     8、final修饰的类不能被继承,final实现的方法不能被实现,所以,final和abstract永远不能同时使用。
     9、static和abstract不能同时修饰某个方法,也就是说没有什么类抽象方法。
     10、abstract关键字修饰的方法必须被其子类重写才有意义,因为他本身永远不会有方法体,所以abstract不能和private同时使用。

抽象类的作用

不难看出,抽象类是从多个具体类中抽象出来的父类,所以既有更高层次的抽象,以它作为其子类的模板,避免子类的随意性。
抽象类体现了数据抽象的思想,是实现多态的一种机制。

接口

简单介绍

使用interface关键字定义接口,接口也不能被实例化,一个接口可以有多个直接父接口,接口只能继承接口,不能继承类。
接口里面的Field只能是常量,方法只能是抽象方法。在接口中,不管是否使用public static final修饰符,接口里的Field总将使用这三个修饰符来修饰。
接口里没有构造器和初始化块,因此接口里定义的Field只能在定义时指定默认值。
接口不能显式的继承任何类,但是所有的接口类型的引用变量都可以直接赋给Object类型的引用变量。因为编译器明白任何java对象都是Object或其子类的实例。
实现接口的非抽象类必须要实现该接口的所有方法。抽象类可以不用实现。

接口的作用

接口所提供的只是一种形式,而没有具体的实现。同时实现该接口的实现类必须要实现该接口的所有方法。
接口是抽象类的延伸,一个类可以同时实现多个接口。
通过实现多个接口可以弥补java单继承的不足。

接口和抽象类

接口和抽象类都不能被实例化,都位于继承树的顶端,用于被其他类实现和继承。
接口和抽象类都可以包含抽象方法。
接口里不能定义静态方法,抽象类可以定义静态方法。
抽象类在java语言中所表示的是一种继承关系,一个子类只能存在一个父类,但是可以存在多个接口。
在抽象类中可以拥有自己的成员变量和非抽象类方法,但是接口中只能存在静态的不可变的成员数据,它的所有方法都是抽象的。
抽象类和接口所反映的设计理念是不同的,抽象类所代表的是“is-a”的关系,而接口所代表的是“like-a”的关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值