JAVA学习小结
一.抽象方法和抽象类
抽象类不一定有抽象方法,但有抽象方法的一定是抽象类
格式:public abstract 返回值类型 方法名(参数列表)
public abstract class 类名 {}
抽象类和抽象方法的意义:统一子类具有相似特征的方法的实现格式
二.接口
1.什么是接口:仅包含方法的声明,无实现代码(抽象类可实现部分代码)
2.定义和使用
- 格式:public interface 接口名1, 接口名2,........ ,{};
- 不能实例化;
- 接口--->(实现)类:public class 类名 implements 接口名{};
- 接口的实现类:要么是抽象类(可在此实现部分抽象方法); 要么重写父类中所有的抽象方法;
可以在继承类时实现多个接口
3.成员特点
三.简单练习代码
//在抽象类中实现构造方法和创建部分抽象方法
public abstract class Anilmals {
private String name;
private int age;
public abstract void eat();
public Anilmals() {
}
public Anilmals(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
//创建接口
public interface swim {
public abstract void swimm();
}
//其中一个子类的接口,抽象类的方法的实现
public class Dog extends Anilmals implements swim{
public Dog() {
}
public Dog(String name, int age) {
super(name, age);
}
@Override
public void eat() {
System.out.println(super.getName() + "吃肉");
}
@Override
public void swimm() {
System.out.println("狗刨");
}
}
算法学习小结
快速幂
1.基本概念及用途:用于快速计算一个数的整数次幂的算法:用于在计算时,指数极大的情况下对其进行优化进而降低时间复杂度提高运算效率 O(log n) ;
2.原理:将指数进行二进制分解,然后利用指数的二进制数表示来不断进行a的乘算;
模板题
代码
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
ll c;
int ksm(int a,int b){
int res=1;
//快速幂部分
while(b){
if(b&1)res=res*a%c;
a=a*a%c;
b>>=1;
}
//
return res%c;
}
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int t;cin>>t;
while(t--){
ll a,b;cin>>a>>b>>c;
cout<<ksm(a,b)<<'\n';
}
return 0;
}