java 抽象类 同时 接口 组合,Java中抽象类和接口

一,抽象类

抽象方法用abstract修饰

抽象方法没有任何执行语句

因为无法执行抽象方法,抽象方法的类也必须申明为抽象类

无法实例化一个抽象类,可以实例化其非抽象子类

抽象类用于被继承

抽象类可以强迫子类实现其定义的抽象方法,抽象方法相当于定义了规范

抽象类中可以有非抽象方法

抽象类中的成员可以是 private、默认、protected、public

抽象类中可以定义构造器

二,接口

接口定义:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。

为什么使用接口:

1. 减少代码的书写(上边分析的代码重载)

2. 提高了代码的可维护性和扩展性。

3. 在团队合作中,代码的规范性

如果一个抽象类没有字段,所有方法全部都是抽象方法,就可以把该抽象类改为接口。

注意事项:

接口定义的方法默认是public abstract(可以在定义时不写)

interface可以继承自另一个interface,继承时使用extends

接口可以定义default方法(JDK1.8后特型)

接口中定义的成员变量实际上都是常量

接口中不能有静态方法

三,抽象方法

抽象方法不能被标记为static, native, synchronized。

抽象方法需要子类重写,而静态的方法是无法被重写的,因此二者是矛盾的。本地方法是由本地代码(如 C 代码)实现的方法,而抽象方法是没有实现的,也是矛盾的。synchronized 和方法的实现细节有关,抽象方法不涉及实现细节,因此也是相互矛盾的。

四,面试题

问题:接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concreteclass)?抽象类中是否可以有静态的main方法?

答案:都是可以的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值