/*
* static修饰成员方法
*
* 格式:
* 权限修饰符 static 返回值类型 方法名(形式参数列表){
* // 方法体;
* }
*
* 【重点】
* 用static修饰的成员方法,称之为【静态成员方法】,这个【静态成员方法】是早于对象的创建而【加载】
* 对象销毁之后仍然存在
*
* 所以说:【静态成员方法】和对象“无关”
*
* 如果采用类对象调用【静态成员方法】会报警告
* 应该直接使用静态的方式来调用
*
* 【注意事项】
* 1. 在静态方法中不能用this关键字
* 推论:
* 因为【静态成员方法】可以通过类名来调用,用雷鸣调用的情况下,是不存在对象的,而this关键字
* 是用来表示调用该方法的对象关键字,这里不存在对象,所以不能用。
* 【没有对象】
*
* 2. 在static修饰的【静态成员方法】中,不能使用【非静态成员变量】,因为【非静态成员变量】是保存在类对象
* 的【堆区】内存中,和类对象共存,而在【静态成员方法】的调用过程中是没有对象的,所以不能使用【非静态成员变量】
*
* 3. 想在【静态成员方法】中使用非静态成员变量
* 在当前【静态成员方法】中使用new关键字,调用构造方法,创建一个对象,使用该对象,
* 案例:
* 单例设计模式
* 【总结】
* 静态对静态,非静态对非静态
*
* 【静态成员方法用途】
* 1. 调用方便
* 2. 用来完成一些【工具类】
*
* */
class Dog{
// 成员变量
private String name;
// 静态成员变量
static String country = "JP";
// 构造方法
public Dog(){}
public Dog(String name){
this.name = name; // JSP
}
// setter 和 getter方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// 成员方法
public void run(){
this.name = "110"; // 使用this关键字调用非静态成员变量
name = "112"; // 非静态成员变量
country = "Janp"; // 静态成员变量
System.out.println("跑来跑去");
}
public static void sleep(){
country = "RB"; // 静态成员变量
// name = "003"; // 这个会报错
System.out.println("睡大觉");
}
// 在静态方法中创建对象
public static void test(){
Dog dog = new Dog("狗子");
System.out.println(dog.name);
}
}
public class static修饰成员方法 {
public static void main(String[] args) {
Dog dog = new Dog("Bobo");
// dog.sleep(); // 这个出现警告
Dog.sleep(); // 推荐使用这种方式进行调用
}
}
网友评论