一文读懂 Java 中类属性、类方法

1.什么是类属性

类变量也叫静态变量/静态属性,是该类的所有对象共享的变量,任何该类的对象去访问它是,得到的都是相同值,同样,该类的任何对象去修改它时,修改的也是同一个变量

1.1.如何定义类属性

定义语法
1、访问修饰符 static 数据类型 变量名;
2、static 访问修饰符 数据类型 变量名;

1.2.如何访问类属性

1、类名.属性名
2、对象名.属性名

1.2.1 访问修饰符访问范围

ps:静态属性访问修饰符和普通属性修饰符是一致的

修饰符同包同类子类所有类
public
protected×
默认××
private×××

[访问属性案例]

public class Static_ {
    public static void main(String[] args) {
        // 类名.属性名
        // 类变量是随着类的加载而创建,所以即使没有创建对象实例也可以访问
        System.out.println(Person.name);
        // 对象名.属性名
        Person p = new Person();
        System.out.println(p.name)
    }
}

class Person {
    // 静态属性
    public static String name = "Jack";
    // 非静态属性
    public int age = 18;
}

1.3什么时候需要使用类属性呢?

当我们需要某个类的所有对象都共享一个变量时就可以使用静态属性,比如:定义一个Person类,统计共捐款多少钱的时候就可以使用静态属性

2.什么是类方法

类方法也称静态方法

2.1如何定义静态方法

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

2.2 如何调用静态方法

1、类名.方法名
2、对象名.方法名

2.3 类方法的应用实例

实例化三个对象,统计共捐款多少钱

public class Static_ {
    public static void main(String[] args) {
        // 创建三个对象
        new Person("Jack").sumMoney(100);
        new Person("Bob").sumMoney(200);
        new Person("Tom").sumMoney(300);;

        // 因为 showMoney 是静态方法,所以可以使用:
        // 类名.静态方法 调用
        Person.showMoney(); // 输出捐款多少钱
    }
}

class Person {


    // 非静态属性
    public String name;

    // 静态属性
    public  static double CountMoney;

    // 构造器
    public Person(String name) {
        this.name = name;
    }
    public  void sumMoney(double money) {
        CountMoney += money; // 累加捐款多少钱
    }

    public static void showMoney() {
        System.out.println("共捐款 " + CountMoney + " 元钱!");
    }
}

2.4、类方法中无 this 和 super 参数

在这里插入图片描述

2.5普通方法和对象有关,需要通过对象名调用,不能通过类名调用【看例子】

public class Static_ {
    public static void main(String[] args) {
//        Person.sum(); // 错误,sum() 是普通方法,需通过对象名调用
        new Person().sum(); // 正确
        // 类名.方法名
        Person.show(); // 正确,因为 show() 是静态方法

    }
}

class Person {


    // 非静态属性
    public String name;

    // 静态属性
    public  static double CountMoney;


    public  void sum() {
        System.out.println("普通方法");
    }

    public static void show() {
        System.out.println("静态方法");
    }
}

2.6 静态方法中只能访问静态属性或静态方法

案例

class Person {

    // 非静态属性
    public String name;

    // 静态属性
    public  static double sal = 1800;


    public  void eat() {
        System.out.println("普通方法");
    }

    public static void cat() {
        System.out.println("静态方法");
    }

    public static void show() {
        System.out.println(name); // 错误,name 不是静态属性
        System.out.println(sal); // 正确,name 是静态属性
        eat(); // 错误,eat 不是静态方法
        cat(); // 正确 car 是静态方法
    }

}

2.7 普通成员方法即能访问静态方法也能访问非静态方法

class Person {

    // 非静态属性
    public String name;

    // 静态属性
    public  static double sal = 1800;
    
    public  void eat() {
        System.out.println("普通方法");
    }

    public static void cat() {
        System.out.println("静态方法");
    }

    public  void show() {
        eat(); // 非静态方法
        cat(); // 静态方法
    }
}

总结

1、静态成员方法只能访问静态属性或静态方法,不能访问普通成员方法
2、普通成员方法既可以访问静态方法、静态属性,也能访问非静态属性、非静态方法

  • 28
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值