类和对象


Class:类是对一类具有相同属性的事物的抽象。可以理解为类只是一张设计图。

Object:对象是对类的实例化,就是按照类图纸,制造出来可操作的实体。

类的定义

class 类 {    成员变量 --> 代表类具备的属性    成员方法 --> 类可以进行的行为}

举一个示例来看,比如学生。学生在
属性方面有(姓名、年龄)
行为方面有(学习、睡觉)

文件: Student.java内容:public class Student {    String name;    int age;        public void sleep() {        System.out.println("在睡觉");    }        public void study() {        System.out.println("学习");    }}

类名 首字母大写,驼峰命名,见文知意
一个Java文件中只能有一个类被public修饰,且public修饰的类必须是代码的文件名,如上Student.java和public class Student {}


构造方法

无返回类型与类同名的方法。如果不写构造方法,JVM会自动为类添加一个无参构造方法。

如果写了构造方法,则不会自动生成无参构造方法。

每次实例化时,虚拟机会自动调用构造方法,用来初始化对象。

注: 建议在构造类时,手动把空参和带全部参数的构造方法都写上。

class Person {    int age;    String gender;    public Person() {        System.out.println("空参构造");    }    public Person(int age, String gender) {        this.age = age;        this.gender = gender;        System.out.println("有参构造方法");    }}

标准JavaBean类和快捷键标准

  1. 类名要见名知意
  2. 成员变量要用 private 确保安全性
  3. 提供至少两个构造方法
    • 无参构造
    • 带全部参数的构造方法
  4. 成员方法
    • 提供每个成员变量对应的 get() 和 set() 方法
    • 其他相关方法

IDEA 快捷键

  • alt + Insert

Constructor 为生成构造器

Getter and Setter 为成员变量生成 get & set 方法

  • PTG 插件

Ptg To JavaBeam,会自动生成所有成员变量的 get & set 方法甚至注释都帮你写好了


对象内存图

课程链接 对象内存图


共享成员变量

使用 static 修饰符

学生类中,如果要使所有学生共享 专业 department 这个变量就进行如下操作。

class student {    private String name;    private String gender;    public static String department; // 所属专业}public class StuTest {    public static void main(String[] args) {        student.department = "计算机";  // 用类名直接调用        student stu1 = new student();        stu1.department = "软件工程";  //用实例对象调用        student stu2 = new student();        student stu3 = new student();        System.out.println(stu1.department);        System.out.println(stu2.department);        System.out.println(stu3.department);        System.out.println(student.department);    }}

Output:

软件工程软件工程软件工程软件工程

注: 建议使用类名调用,既然是共享,逻辑上不应该用某个实例来调用。

静态变量归属于类,随类加载,优先于实例对象。

类加载后会在堆存储中开辟静态存储区。后期实例化的 stu1, stu2 都会自动去静态存储区取得静态变量 department 的值。

感受:其实静态变量并不是说,这个变量不能修改,而是同类实例共享变量值。