static 静态修饰符
- 静态变量
private static int age; 又叫类变量,使用时 类名.变量名; - 静态方法
public static void go( ){}
private static int age; //静态变量
private double score;
public static void main(String[] args) {
Student stu = new Student();
System.out.println(Student.age); //类变量
System.out.println(stu.age); //一般写成上面的格式
System.out.println(stu.score); //普通变量
System.out.println("==========");
go(); //static类可以直接调用static方法
//run(); 不可直接调用普通方法
stu.run(); //普通方法必须先new后引用
stu.go();
}
public void run(){
go();
}
public static void go(){
System.out.println("gogo");
}
{
//匿名代码块,赋予初始值
System.out.println("匿名代码块");
}
static {
//静态代码块,只执行一次
System.out.println("静态代码块");
}
public Student() {
System.out.println("构造方法");
}
}
执行结果:静态代码块
匿名代码块
构造方法
0
0
0.0
==========
gogo
gogo
gogo
//静态导入包
import static java.lang.Math.random;
main中执行顺序:
静态代码块—匿名代码块—构造方法—方法体
抽象类 abstract
- 抽象方法,只有方法名没有方法体
public abstract class Action {
//抽象类也存在构造器
public Action() {
}
//抽象方法,只有方法名没有方法体
public abstract void doSomething();
}
- 但是子类继承这个父类后,必须重写抽象方法
//抽象类的所有方法,必须由子类重写
public class A extends Action{
@Override
public void doSomething() {
}
}
接口 interface,implements
普通类 只有具体实现
抽象类 具体实现和抽象方法都有,只不能new
接口 无法自己写方法,只有抽象方法
专业约束,约束和实现分离
- interface 定义
接口中所有定义都是抽象的 public abstract - implements
实现接口,必须重写接口方法
作用
- 约束
- 定义一些方法,让不同人实现
public abstract
public static final- 接口不能被实例化,没有构造方法
- 用implements实现多个接口,并且必须重写接口
public interface UserService {
//常量 public static final
int Age = 33; //一般接口中不会定义常量
// 接口的所有定义都是抽象的 public abstract
void add(String name);
void del(String name);
void update(String name);
void query(String name);
}
// implements 实现接口,但是必须重写接口中的所有方法
// 接口可以实现多继承
public class UerServiceImpl implements UserService{
@Override
public void add(String name) {
}
@Override
public void del(String name) {
}
@Override
public void update(String name) {
}
@Override
public void query(String name) {
}
}