Static关键字详解
package com.oop.demo07;
//static
public class Student {
private static int age; //静态的变量
private double score; //非静态变量
public void run(){
go(); //非静态方法可以调用静态方法里所有的东西
}
public static void go(){
}
public static void main(String[] args) {
Student s1 = new Student();
//调用变量
System.out.println(Student.age); //静态变量可以直接通过类名访问
//System.out.println(Student.score); //会报错,非静态不能直接类名访问对象
System.out.println(s1.age);
System.out.println(s1.score);
//调用方法
new Student().run();
Student.go();
go();
}
}
package com.oop.demo07;
public class Person {
/*
{
//代码块(匿名代码块)
}
static{
//静态代码块
}
*/
{
System.out.println("匿名代码块");
}
static {
System.out.println("静态代码块");
}
public Person() {
System.out.println("构造方法");
}
public static void main(String[] args) {
Person person1 = new Person();
//输出内容:
//静态代码块
//匿名代码块
//构造方法
System.out.println("=========================");
Person person2 = new Person();
//输出内容:
//匿名代码块
//构造方法
//得出结论:静态代码块只执行一次
//匿名代码块可以赋初始值
}
}
package com.oop.demo07;
//静态导入包
import static java.lang.Math.random;
import static java.lang.Math.PI;
public class Test {
public static void main(String[] args) {
System.out.println(random());
System.out.println(PI);
}
}
抽象类
特点:
- 不能new这个抽象类,只能靠子类去实现它:约束!
- 抽象类可以写普通的方法
- 抽象方法必须在抽象类中
package com.oop.demo08;
//abstract 抽象类
//类 extends :单继承 (接口可以多继承)
public abstract class Action {
//abstract 抽象方法,只有方法名字,没有方法的实现!
public abstract void doSomething();
}
package com.oop.demo08;
//抽象类的所以方法,继承了它的子类,都必须要实现它的方法
public class A extends Action{
@Override
public void doSomething() {
}
}