static关键字--静态成员方法与非静态成员方法

本文详细解释了Java中static修饰的静态数据成员和静态方法的概念,强调了静态方法在类加载后即存在,而对象方法依赖于对象实例。同时讨论了静态成员与非静态成员之间的访问权限和限制,提供了相关代码示例加以说明。
摘要由CSDN通过智能技术生成

static修饰的成员数据叫作静态数据成员,简称类成员。同理,static修饰的成员方法称为静态方法,简称类方法。类方法和类成员 一样,都可由类直接调用。

static修饰成员方法

语法格式

static 方法返回值类型 方法名(形参列表) {

        语句体;

        [return 表达式;]

}

在方法返回值类型前使用static,表示该方法是静态方法

调用static方法

语法格式

类名.方法名(实参列表);

静态方法和非静态方法

类体中的成员方法有对象方法(非静态方法)和类方法(静态方法),数据成员有对象成员(非静态数据成员)和类成员(静态数据成员)。通过前面的学习我们知道对象方法能调用对象成员,那么类方法能否调用对象成员呢?

class Student {
    private String school;//私有类成员
    //构造方法
    public static void setSchool (String school) {
        this.school = school;
    }
}

 对以上代码进行分析,在时间角度上,JVM加载完Student类后就存在第四行的类方法 setSchoo(),而第二行的私有对象成员需要实例化对象Student后才会存在,JVM 先把类加载到内存,利用new调用构造方法时实例化对象。因此类方法总是存在,而对象方法只有在实例化对象后才存在,也就是说对象成员不一定存在。所以该代码的第五行(类方法)调用第二行的对象成员将出现编译错误。

 上图显示了类体中成员之间的调用关系

否定性访问是静态成员不能访问非静态成员,其他成员之间都能访问,例如,非静态成员能访问静态成员,静态成员之间、非静态成员之间都能互相访问。

案例展示

package jsu.luca.com;
class MyClass {
    //静态私有成员
    private static String staticInfo = "厚德载物、自强不息";
    //非静态私有成员
    private String commonInfo = "艰苦奋斗!";
    //静态成员方法
    public static void staticMethod () {
        //静态成员方法可以访问静态数据成员
        System.out.println(MyClass.staticInfo);
        //静态成员方法不能访问非静态数据成员
        //System.out.println(this.commInfo);//出行错误提示
        }
        //非静态成员方法
    public void  commonMethod (){
        //非静态成员方法可以访问静态数据成员
        System.out.println(MyClass.staticInfo);
        //非静态成员方法可以访问非静态数据成员
        System.out.println(this.commonInfo);//没有错误提示
    }
    //静态成员方法
    public static  void staticMenthod_2 (){
        MyClass.staticMethod();//能访问静态成员方法
        //this.commonMethod();//出行错误提示,不能访问非静态成员方法
    }
    //非静态成员方法
    public void  commonMenthod_2 (){
        MyClass.staticMethod();//能访问静态成员方法
        this.commonMethod();//能访问非静态成员方法
    }
}

 该代码演示了静态成员和非静态成员之间的访问关系

感谢阅读,欢迎指正!

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值