ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【韩顺平】Java类(静态)方法知识点总结

2022-03-19 11:34:13  阅读:200  来源: 互联网

标签:知识点 fee Java double 调用 Student 方法 public 顺平


为什么需要类(静态)方法

我们先来解决这样一个简单的需求:

创建一个类,实现求两数之和的功能

则我们可以创建如下使用普通方法完成功能的类:

class MyTools{
    public double calSum(double n1,double n2){
        return n1+n2;
    }
}

下面只需再主函数中创建类对象并且调用calSum函数即可完成需求

但是,这样的处理方式也存在一个问题:即当我们想要完成求和的功能时,就至少要创建一个对象,而实际上我们执行这个方式其实并不需要涉及任何和对象相关的成员,这就造成了我们空间的浪费,使得开发效率低下,为了解决这类问题,我们就可以使用类(静态)方法来解决问题

类(静态)方法基本介绍

什么是类方法

类方法也叫静态方法,在类加载时就已初始化,因此可以直接通过类名.类方法名来调用,无需创建对象,这也是其区别于普通方法的一个特点,借助这一特点,我们可以创建一些包含类方法的工具类来帮助我们提高开发效率,如本例中的求和需求中出现的问题就可通过将calSum方法改成类方法来解决,代码如下:

class MyTools{
    public static double calSum(double n1,double n2){
        return n1+n2;
    }
}

如何定义类方法

类方法定义形式如下:

1.访问修饰符 static 数据返回类型 方法名(){ } 【常用】

2. static 访问修饰符 数据返回类型 方法名(){ }   

如何调用类方法

1.类名.方法名()

我们使用类方法的目的就是减少因为创建对象而浪费的空间,因此,我们更多会去使用类名.方法名()的调用方式

2.对象名.方法名()

类方法使用的注意事项

1.类方法和普通方法都是随着类的加载而加载,将结构信息存储在方法区

类方法无this的参数

普通方法中隐含this的参数

2.类方法可以通过类名调用,也可以通过对象名调用(更多推荐用类名调用)

3.普通方法和对象有关,需要通过对象名调用,不能通过类名调用

4.类方法中不允许使用和对象有关的关键字,比如this和super(因为this和super会不知道该指向哪个对象),而普通方法可以

5.类方法(静态方法)中只能访问静态变量和静态方法

6.普通方法既可以访问普通变量,也可以访问静态变量

5和6总结:静态方法只能访问静态的成员,非静态的方法,可以访问静态成员和非静态成员

下面通过案例来一一说明:

public class StaticMethod {
    public static void main(String[] args) {
        Student tom = new Student("tom");
        Student mary = new Student("mary");
        //3.普通方法和对象有关,需要通过对象名调用,不能通过类名调用
        tom.payFee02(100);
        mary.payFee02(200);
        //2.类方法可以通过类名调用,也可以通过对象名调用(更多推荐用类名调用)
        Student.showFee();
        mary.showFee();//不推荐
    }

}
class Student{
    private String name;
    private static double fee=0;

    public Student(String name) {
        this.name = name;
    }
    //4.类方法中不允许使用和对象有关的关键字,比如this和super(因为this和super会不知道该指向哪个对象),而普通方法可以
    public static void payFee01(double fee){
        //this.fee+=fee;//只演示this
        Student.fee+=fee;
    }
    public void payFee02(double fee){
        this.fee+=fee;
    }

    public static void showFee(){
        System.out.println("总学费为:"+Student.fee);
    }

    public static void visit01(){
        //5.类方法(静态方法)中只能访问静态变量和静态方法
        fee=100.0;//没问题
        showFee();//没问题
//        name="张三";//不行
//        payFee02();//不行
    }
    public void visit02(){
        //6.普通方法既可以访问普通变量,也可以访问静态变量
        fee=100.0;//没问题
        showFee();//没问题
        name="张三";//没问题
        payFee02(100.0);//没问题
    }
}

标签:知识点,fee,Java,double,调用,Student,方法,public,顺平
来源: https://blog.csdn.net/m0_66908465/article/details/123590036

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有