类和对象
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类和快捷键标准
- 类名要见名知意
- 成员变量要用 private 确保安全性
- 提供至少两个构造方法
- 无参构造
- 带全部参数的构造方法
- 成员方法
- 提供每个成员变量对应的 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 的值。
感受:其实静态变量并不是说,这个变量不能修改,而是同类实例共享变量值。