类可以理解为创造一个事物的模板。java当中用 class + 类名 {} 来表示类,其中类名的首字母推荐大写。
这也是一个类,和上述不同的事这个类的class前面有public修饰,public有什么用先放一放等会再说。
对象不是男/女朋友的意思,是一个具体的事物,比如猫,狗等等。上面说到类是创造事物的模板,我们都知道一个事物是有多种属性的,那么我们在创造对象的时候把这些属性放在类中就顺理成章了。
像这样就把学生的两个属性定义好了,在这里属性有个专业名词叫成员变量,二者是一个意思。不过我并没有把成员变量初始化,但编译器没有报错,这是为什么呢?因为成员变量会有一个初始值,那么这个初始值是什么呢?一般都是对应数据类型的0,boolean特殊一点是false。
一个事物除了属性还会行为,同样行为也是写在类中。
行为也有个专业名词叫成员方法。
类创建好后该怎么用呢?
如图 :第一步:类名+重命名(重新起个名字让类有个外号,叫起来更亲切)=new(是个关键字,用来拉近main函数和类的关系) + 类名。这一步叫实例化,能够让main函数知道我们所创建类的存在。第二步:外号+.(点)+我们需要调用的成员变量(属性)。这样成员变量(属性)就调用好了。
怎么调用成员方法(行为)呢?
在实例化后 用外号.所想要调用的成员方法(行为)即可。
有public(公共的)就有private(私人的),那么public和private到底是干什么的呢?
weight被private修饰,在main函数中通过点的方式引用编译器报错了,而被public修饰的age,name没有报错,在上两个图中的age,name没有被任何东西修饰也没有报错。这是为什么呢?它们有个名字叫做权限访问操作符。private修饰的东西只能在它所在的类中直接使用,public所修饰的东西可以在任意地方使用,看似上面两个图中的age和name没有被修饰任何东西修饰,其实被叫一个default的权限操作符修饰了,这个操作符不用写,写上反而不对。default修饰的东西可以用在同一个文件夹中的不同类。
那么我们能不能在其他类中访问private修饰的东西呢?当然可以,虽不能直接访问但可以间接访问。我们可以鼠标右键然后按照生成——》Getter和Setter来完成这个操作
按CTRL键同时鼠标左键点击可以一次性选择多个。
然后在main函数中用外号点Set,Get函数即可对 weight进行操作
在Set函数中出现了一个我们没有见过的this.他是干什么的呢?暂且卖个关子,先讲一个叫构造方法的新概念。
什么是构造方法,它有什么用?可以理解为给类中的成员变量(属性)在main函数中赋值的方法。它同样在类中可通过 右键——》generat(生成)——》第一行英文(构造函数) 来生成构造方法。也可自己手写格式为 类名 +( 有参传参,无参不填){
方法体
}
注意:类名必须和所在类中类名完全一样。且没有返回类型,可以重载(方法的名字一样,参数的类型、数量不一样)
现在构造方法中的形参和我们的age,name,weight不重名,如果重名会怎么样呢?
我们赋的值失效了,this.就是解决这个问题的。
this.有着以下特性:
1. this的类型:对应类类型引用,即哪个对象调用就是哪个对象的引用类型
2. this只能在"成员方法"中使用