(简单说:静态方法和对象没有关系,不能使用对象的成员和方法),而对象可以访问静态的成员(最好用类名
访问,用对象访问有点不规范) 因为静态成员是共享的,可以被所有的地方访问,而实例成员不是共享的,只能对象访问
实例方法可以直接访问实例成员:可以理解实例方法都是属于对象的,实例成员也是属于对象的,属于实例方法可以直接访问实例成员
静态方法中不可以出现this关键字:因为this关键字表示当前对象的地址,静态方法不能出现和对象相关的,属于类 (实例方法中可以出现this,因为实例方法和成员都属于对象)
package com.itheima.d1_static;
public class Test3 {
/**
* 静态成员
*/
public static int onlineNumber = 10;
public static void test2(){
System.out.println("========test2==========");
}
/**
* 实例成员
*/
private String name; // 静态方法不能直接访问实例成员
public void run(){ // 这是一个实例方法,对象访问,
System.out.println(name + "跑得快");
}
// 1.静态方法只能访问静态成员,不能“直接”访问实例成员。 可以new一个对象访问实例成员
public static void test(){
System.out.println(Test3.onlineNumber);
System.out.println(onlineNumber); // 静态成员在本类中直接访问
test2(); // test2()是静态方法,静态方法中可以调用静态方法 (简单说:静态方法和对象没有关系,不能使用对象的成员和方法)
// System.out.println(name); 报错,静态方法不能访问实例成员
}
// 2.实例方法可以访问静态成员,也可以访问实例成员
public void go(){
System.out.println(Test3.onlineNumber);
System.out.println(onlineNumber); // 实例方法访问静态成员
// 实例方法可以直接访问实例成员:可以理解实例方法都是属于对象的,实例成员也是属于对象的,属于实例方法可以直接访问实例成员
test2(); // 实例方法访问静态方法
test(); // 实例方法访问静态方法
run(); // 实例方法访问 实例方法 同一个对象,都可以访问
// 实例方法中可以出现this,属于对象
System.out.println(this); // 打印当前对象的地址 com.itheima.d1_static.Test3@41629346
}
// 3.静态方法中不可以出现this关键字
public static void test3(){
// System.out.println(this); // 因为this关键字表示当前对象的地址,静态方法不能出现和对象相关的,属于类
}
public static void main(String[] args) {
// 目标: 理解static 访问相关的语法:面试笔试题,或者以后理解程序很重要的知识(扩展).
Test3 t = new Test3();
t.go();
}
}