类和对象_3

本文详细阐述了Java中类的概念,静态方法和属性的特性,以及它们的区别和应用场景。包括静态属性的共享性、静态方法的类相关性以及在类的实例化过程中的使用规则。通过实例代码演示了如何正确运用静态元素进行编程。
摘要由CSDN通过智能技术生成

类和对象 - static
类:

  1. 是静态方法/静态属性的集合
  2. 用来构造对象的模板
    Static
    修饰属性 : Java静态属性和类相关,和具体的实例相关。换句话说,同一个类的不同实例共用同一个静态属性。
    修饰方法:如果任何方法上应用static关键字,次方法称为静态方法。
    1.静态方法属于类,而不属于类的对象。
    2.可以直接调用静态方法,而无需创建类的实例。
    3.静态方法可以访问静态数据成员,并可以更改静态数据成员的值。
    注意事项1: 静态方法和实例无关, 而是和类相关. 因此这导致两个情况:
    1.静态方法不能直接使用非静态数据成员或者调用非静态方法(非静态数据成员和方法都是和实例相关的)
    2.this和super两个关键字不能在静态上下文中使用 (this是当前实例的引用,super是当前实例父类实例的引用,)

代码示例 :

public class Teacher {
    // 把类用于实例化对象的模板 —— 都不被 static 修饰
    // 一直在和 Teacher 对象有关
    public String name; // 某个老师(对象),它有它的名字
    public int age;     // 某个老师(对象),它有它的年龄

    // 构造方法用于构造某个老师(对象)
    public Teacher(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // 某个老师(对象)自我介绍
    public void introduce() {
        System.out.printf("我是 %s,我今年 %d 岁\n", name, age);
    }

    // 把类用于静态属性和静态方法的集合 —— 都被 static 修饰
    public static int countOfTeacher = 0;
    // 超脱于一个个老师(对象)之上的,和 Teacher 对象无关的

    // 也和 Teacher 对象无关
    public static String buildTeacher(String name) {
        countOfTeacher++;
        return name;
    }

    // 也和 Teacher 对象无关
    public static int getCountOfTeacher() {
        return countOfTeacher;
    }
}
public class TeacherTest {
    public static void main(String[] args) {
        // 针对 Teacher 作为对象模板的用法
        Teacher a = new Teacher("AAA", 1);
        a.introduce();  // 通过指向 Teacher 对象的引用去调用

        // 针对 Teacher 用户静态的集合
        // 使用类名调用,和对象无关
        int b = Teacher.countOfTeacher;
        System.out.println(b);                  // 0
        System.out.println(Teacher.buildTeacher("Hello"));  // "Hello"
        System.out.println(Teacher.countOfTeacher); // 1
        System.out.println(Teacher.getCountOfTeacher());    // 1
        System.out.println(Teacher.buildTeacher("world"));  // "world"
        System.out.println(Teacher.countOfTeacher); // 2
        System.out.println(Teacher.getCountOfTeacher());    // 2
    }
}

整个程序的运行过程中,有且仅有一份类 类型的“对象”
在这里插入图片描述
在静态上下文(静态方法)中,不能使用非静态属性和非静态的方法 。(静态上下文中没有this)非静态属性和非静态的方法通过this访问

在普通上下文(普票方法)中,可以使用静态属性和静态方法 。使用静态属性和静态方法 通过类名方法
在这里插入图片描述
在这里插入图片描述
写代码时的原则:
如果,方法的执行过程中,需要用到this,就必须不加static
否则,方法的执行过程中,不会用到this,可以加可以不加。

关于静态属性的初始化

  1. 定义时初始化
  2. 静态代码块
    按照书写顺序执行

静态属性初始化的时机:
发生在类被加载的期间

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值