类方法基本使用

简介: 类方法基本使用

1. 类方法基本介绍

  • 类方法也叫静态方法。形式如下:
访问修饰符 static 数据返回类型 方法名(){ }【推荐】
static 访问修饰符 数据返回类型 方法名(){ }

2. 类方法的调用

  • 使用方式:
类名.类方法名
或
对象名.类方法名
  • 【前提是满足访问修饰符的访问权限和范围】

3. 类方法使用案例

  • 统计学费总和
public class StaticMethod {
    public static void main(String[] args) {
        //创建两个学生对象,交学费
        Stu xdr = new Stu("jack");
        //xdr.payFee(100);
        Stu.payFee(100);

        Stu lucy = new Stu("lucy");
        //lucy.payFee(200);
        Stu.payFee(200);

        // 输出当前收到的总学费
        Stu.showFee();//300

    }
}

class Stu{
    private String name;
    //定义一个静态变量来累积学生的学费
    private static double fee = 0;

    public Stu(String name) {
        this.name = name;
    }
    //说明:
    //1. 当方法使用了 static 修饰后,该方法就是静态方法
    //2. 静态方法就可以访问静态属性/变量
    public static void payFee(double fee){
        Stu.fee += fee; //累积到静态变量
    }
    public static void showFee(){
        System.out.println("总学费有:" + Stu.fee);
    }
}

在这里插入图片描述

4. 类方法经典的使用场景

  • 当方法中不涉及到任何和对象相关的成员,则可以将方法设计成静态方法,提高开发效率。

比如:工具类中的方法 utils,Math类、Arrays类、Collections 集合类

    //如果希望不创建实例,也可以调用某个方法(即当做工具来使用)
    // 这时,把方法做成静态方法就非常合适
    System.out.println("9的开平方的结果是:" + Math.sqrt(9));

在这里插入图片描述

  • 小结

在程序员实际开发,往往会将一些通用的方法,设计成静态方法,这样我们不需要创建对象就可以使用了,比如打印一维数组,冒泡排序,完成某个计算任务等。

public class StaticMethod {
    public static void main(String[] args) {

        System.out.println(MyTools.calSum(10,20));
        
    }
}

//开发自己的工具类时,就可以把方法做成静态的,方便使用
class MyTools{
    //求出两个数的和
    public static double calSum(double n1, double n2){
        return n1 + n2;
    }
    //可以写出很多这样的工具方法...
}

在这里插入图片描述

5. 类方法使用注意事项和细节讨论

1) 类方法和普通方法都是随着类的加载而加载,将结构信息存储在方法区;类方法中无this的参数
普通方法中隐含着this的参数
2) 类方法可以通过类名调用,也可以通过对象名调用。
3) 普通方法和对象有关,需要通过对象名调用,比如对象名.方法名(参数),不能通过类名调用。
4) 类方法中不允许使用和对象有关的关键字,比如thissuper。普通方法(成员方法)可以。
5) 类方法(静态方法)中只能访问静态变量或静态方法。
6) 普通成员方法,既可以访问非静态成员,也可以访问静态成员。

  • 小结:静态方法,只能访问静态的成员,非静态的方法,可以访问静态成员和非静态成员(必须遵守访问权限)

6. 练习

  • 案例1
public class StaticExercise01 {

    static int count = 9;
    public void count(){
        System.out.println("count=" + (count++));
    }

    public static void main(String[] args) {
        new StaticExercise01().count();//9
        new StaticExercise01().count();//10
        System.out.println(StaticExercise01.count);//11
    }
}

在这里插入图片描述

  • 案例2:看看下面代码有没有错误,如果有错误,就修改,看看输出什么?

在这里插入图片描述

  • 案例3:看看下面代码有没有错误,如果有错误,就修改,看看total等于多少?

在这里插入图片描述

  • 小结

(1) 静态方法,只能访问静态成员
(2) 非静态方法,可以访问所有的成员
(3) 在编写代码时,仍然要遵守访问权限规则

目录
相关文章
|
Python
python方法的分类(实例方法、类方法、静态方法)
很多童鞋会比较疑惑,方法和函数有什么区别,都是通过def去定义的啊? 只需要记住一点,方法是用来描述一个目标的行为动作! 不论你是直接通过 类名.方法调用,还是通过由类生成的实例.方法调用。 方法都需要有一个目标才能完成调用的操作。
170 0
|
Java
类变量基本使用
类变量基本使用
129 0
类变量基本使用
|
Python
19_python基础—面向对象-类结构、类属性和类方法、静态方法
19_python基础—面向对象-类结构、类属性和类方法、静态方法
233 0
19_python基础—面向对象-类结构、类属性和类方法、静态方法
|
9月前
|
数据库 Python
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(下)
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)
107 0
|
Python
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(中)
## 封装,继承和多态 ## 1.封装 1、满足把内容封装到某个地方,另一个地方去调用封装的内容 2、使用初始化构造方法,或者使用self获取封装的内容 ## 2.继承 子类继承父类的属性和内容
144 0
|
9月前
|
Python
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
97 0
|
Python
Python - 面向对象编程 - 子类方法的重写
Python - 面向对象编程 - 子类方法的重写
251 0
Python - 面向对象编程 - 子类方法的重写
|
Python
Python 面向对象6: 类属性、类方法、静态方法
Python 面向对象6: 类属性、类方法、静态方法
117 0
Python 面向对象6: 类属性、类方法、静态方法
|
Python
Python基础(十四):私有属性和私有方法
在实际开发中,对象 的 某些属性或方法 可能只希望 在对象的内部被使用,而 不希望在外部被访问到
135 0
Python基础(十四):私有属性和私有方法
|
5月前
|
存储 Python
Python中类方法、实例方法与静态方法的区别
这三种方法的正确使用可以使代码更加清晰、组织良好并且易于理解,从而有效地支持软件开发的面向对象编程范式。
97 1

热门文章

最新文章