抽象类和接口

类的拓展

1.接口

面向接口而非面向实现编程

2.抽象类和抽象方法

抽象类只有声明没有实现,定义了抽象方法的类一定是抽象类,不过抽象列是可以没有抽象方法的,抽象类和具体类一样的是可以拥有自己的实例变量和具体方法,差别就在在于不能创建对象,不如说new user();而具体类就可以。

虽然说抽象类不可以字创建对象,不过可以通过他的具体子类,声明抽象类的变量,引用抽象类具体子类的对象。

为什么我们需要抽象类,难道就是为了多一个不让抽象类自己创建对象而已?

用自己的话来说就是让普通的人呢也乐意把事情做对,引用抽象方法和抽象类,是java提供的一种语法工具,对于一些类和方法,引导开发人员可以正确的使用,减少误用,使用抽象方法而非空方法体就是让子类知道必须要实现这个方法,不然编译器就会报错,使用抽象类就是提醒开发人员,在创建对象的时候,必须要使用哪一个具体子类,而不可能误用不完整的子类。

3.抽象类和接口的异同

使用final关键字,修饰的类和方法不会被继承

(1)抽象类可以定义自己的实例,而接口不可以,一个类可以实现多个接口,不过只能继承一个抽象类.

(2)抽象类和接口是配合而非替代的关系,他们经常一起使用,接口声明能力,抽象类提供默认实现,实现全面或部分方法,一个接口经常有一个对应的实现类,比如在java类库中collection和collections。
(3)抽象类是对类的抽象。也就是对象抽象,抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部(行为)进行抽象。
(4)语法上的;

  • 抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;
  • 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;
  • 接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;
  • 一个类只能继承一个抽象类,而一个类却可以实现多个接口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值