8.2 类和对象

我们回到最初的变量: int i=7; int是类型,i是变量,7是值。类似的变量类型还有double,char,long,short等等。这些变量类型是最基本的类型,它们可以组成更复杂的数据,从而创造一个Java并不存在的数据类型。
存不存在一个代表“手机”的变量类型? 不存在,但是我们可以自己创建。 类就是为解决这个问题而诞生的。
类可以看做是自定义的变量类型。对象就是类的一个变量,或者说是一个实例。在面向对象的世界里,最小的数据单元从基本变量变成了对象。 类有很多属性,我们可以根据需要给类添加属性。下面这个一个“手机类”的定义。
特别注意,下面的代码已经包含class,需要先创建一个文件Mobile.java,然后把下面的代码复制过去
public class Mobile{
    String name;
    String mon;
}
String name; String mon; 这两个就是类Mobile的两个属性,又称为成员变量。 然后我们可以定义一个Mobile类型的变量,我们称这样的变量为对象,还可以给这个m对象设置属性,我们称m为Mobile的一个对象。这个main函数可以在Mobile类里面,如果不在Mobile里面,确保类和Mobile类在同一个包:
public static void main(String[]args){
    Mobile m=new Mobile();
    m.name="iphone 13 pro";
}
定义一个对象,必须是 类名 对象名=new 类名()这样的形式。
new关键字我们在数组的时候用过,在这里意义一样,都是用来分配内存的。关于new,在构造函数那一节会有更详细的介绍。
如果没有new,那么对象并没有分配内存,那么就是空值null,操作一个null的对象会导致NullPointer异常。 Mobile是抽象的,m是具体,类和对象的关系就好比:马和“这一匹马”的关系。
类的定义遵循以下原则:
1.一个类必须定义在同名的java文件里,必须有public关键字
2.类是自定义的类型
3.类名遵循变量名的定义规则
4.类名大写开头,对象小写开头
5.定义一个对象必须使用new+类+()的形式,否则这个对象就是null的

类是一类事物的抽象,而对象,就是具体的某个事物。
万事万物皆对象。(Everything is an object)
这是经典的《Java编程思想》的一个章节名,任何事物,都可以看做是某种类一个对象。
类和对象的关系,就是抽象和具体的关系。 两者的层面不一样:类规定有些什么属性和行为,包括它们的类型和名字;对象则是这个类具体的一个实例,它有自己的属性值。
马是一个类,这匹马就是一个对象,那匹马也是一个对象。
int i=9;
Student stu= new Student();
int是整型变量,它是类型,i是变量。Student是一个类,而stu就是对象,对象的地位相当于变量。 类定义了事物的属性和行为,而对象就是具体某一个事物,对象需要给这些属性值赋值。 例如学生是一个类,它有学号、姓名、班级这三个属性,那么某个对象这三个属性就应该有具体的值。例如某个学生张三,学号2017040511,20软件1班。