主要内容
- Java接口和抽象类的区别是什么?
- 快速幂算法
Java接口和抽象类的区别是什么?
什么是接口?
接口是方法的集合。接口不是类。接口不能用于实例化对象,接口也没有构造方法,接口中的所有方法必须是抽象方法,接口不能包含成员变量,除了static和final修饰的变量。
什么是抽象类?
如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类除了没法直接被实例化之外,与普通的类没有什么区别,它依然有构造器*,成员变量,成员方法。抽象类因为不能被直接实例化,因此抽象类是用来继承的。
它们的区别
- 接口中的所有方法都必须是抽象方法,但是抽象类可以同时包含抽象和非抽象的方法。
- 类可以实现多个接口,但是只能继承一个抽象类。
- 接口中声明的成员变量默认都是final的,而抽象类没有这个限制。
- 接口中的方法默认是public的,而抽象类中的方法可以任意指定。
- 抽象类可以在不实现接口方法的情况下实现接口。
快速幂算法
题目描述:
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0
代码:
1 | public class Solution { |
分析:
在进行幂运算的时候,最简单的方式就是利用循环。想要实现“快速”就得从减少循环的次数入手。首先看一组举例:
1 | //计算2的8次方,需要循环8次,而其等价写法 |
这些变换的技巧基本属于初中数学的范畴,我们只需要注意幂为偶数,和奇数的两种情况即可。