1、static 方法,可以被继承,不能被重写
package com.knowledge.myStatic;
/* 类变量
1、介绍:类变量也叫静态变量/静态属性,是该类的所有对象共享的变量,
任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个
该类的对象去修改它时,修改的也是同一个变量
2、定义:访问修饰符 static 数据类型 变量名; (访问修饰符规则不变)
3、访问:类名.变量名 或 对象名.变量名
4、说明:
1) 什么时候需要用类变量: 当我们需要让某个类的所有对象都共享一个变量时,可以考虑使用类变量
2) 类变量与实例变量(对象属性)区别,类变量所有对象共享,实例变量是单个对象独有
3) 加上static称为类变量或静态变量,否则称为普通变量/实例变量
4) 实例变量不能通过 类名.变量名 来访问
5) 类变量在类加载的时候就初始化
6) 类变量的声明周期:随着类加载开始,到类消亡结束
*/
/* 类方法
1、介绍: 类方法 也称为静态方法
2、定义: 访问修饰符 static 数据返回类型 方法名(){}
3、调用: 类名.方法名(参数)
4、经典使用场景: 当方法中不涉及到任何和对象相关的成员,则可以将方法设计成静态方法,提高开发效率(例如 Math)
即:往往将一些通用的方法设计成静态方法,这样不需创建对象就可以调用
2、说明
1) 类方法和普通方法都是随着类的加载而加载,将结构信息存储在方法区
2) 类方法中无this的参数,不可以用this,普通方法中可以使用(普通方法中隐藏着this的参数)
3) 类方法可以通过类名和对象名调用;
4) 普通方法和对象有关,只能通过对象名调用,不能使用类名调用
5) 类方法中不能使用和对象相关的 this 和 super 关键字
6) 类方法中 只能访问静态属性,或 静态方法 - 静态方法只能访问静态成员
7) 普通成员方法,技能访问普通属性/方法,也可以访问静态变量/方法
3、总结:
静态方法,只能访问静态成员;非静态方法,可以访问静态成员和非静态成员(遵守访问权限)
*/
public class Mystatic {
public static void main(String[] args) {
// 通过类名.变量名访问
// 说明:类变量是随着类的加载而创建的,所以即使没有实例化对象也能访问
// 说明:类加载的时间:
// 1.实例化对象时
// 2.通过类名调用静态变量的时候(类名.class除外)
System.out.println(A.name);
// 类方法使用
Student tom = new Student("tom");
tom.payFee(100);
Student marry = new Student("marry");
marry.payFee(200);
Student john = new Student("john");
Student.payFee(300);
Student.showFee();
}
}
class Student{
public String name;
private static double fee=0;
public Student(String name) {
this.name = name;
}
public static void payFee(double fee){
// 静态方法可以访问静态属性
Student.fee += fee;
}
public static void showFee(){
System.out.println("总费用: " + Student.fee);
}
}
class A{
// 定义一个类变量
public static String name = "123";
}