这是上一节课的链接 第二节课
类与对象
首先什么是对象?
对象就是事物存在的实体,人类 书桌 计算机 甚至是游戏中的角色 任务 装备都可以是一个个对象。
每个人都有他的"名片",比如你的身高,学习成绩 性别等这些静态的东西一般称之为 “字段”(或者叫做属性,但是在有的地方,字段是私有的,属性是对外开放的,属性可以更改或者查看、约束字段的字面值),相对的一个人的动态,比如他会执行的那些动作我们一般称之为方法(函数)。
而我们写的是类,是创建对象之前的定义,我们只能在使用new关键字的时候,才可以将类实例化成对象
创建类的语法:
[权限表达符] class <类名>{
// 定义;
}
比方说我们来定义一个大雁类
public class DaYan{
String _name = "大雁";
int _age = 2;
public static void fly(){
System.out.println("这只大雁在飞");
}
}
了解了这么多,不妨我们也来创建一个类:人 类
人 有 吃Eat喝Drink拉PaiShit撒Play 四个方法
名称 年龄 身份证 字段
public class Person{
String _name = "人类的姓名"
int _age = 23
String _idCode = "510233200110022222X";
}
但是出于编写习惯,我们一次只能在一个类里面编写一个类,不能编写多个,如果真的需要编写多个类,请在项目内创建一个新的java文件
放心一个项目下面的所有文件都是可以互相使用的,只不过在使用之前,JVM会看看你的权限修饰符
一般有这么几个权限修饰符
位置 | private | public | protected | 默认 |
---|---|---|---|---|
本类 | 可见 | 可见 | 可见 | |
同项目(包)内的类或者子类 | 不可见 | 可见 | 可见 | |
不同项目(包)的类或者子类 | 不可见 | 可见 | 不可见 |
这些修饰符适用于方法的权限修饰符 .
提问
为什么会有私有private修饰符?
· 因为我存储的东西不希望公开,是我私有的东西,一般字段都是私有的,我们使用属性来进行对字段的RW(读写)_这句话之后你就懂了
如何将类实例化?
我们创建了类,如何将其实例化?
为什么实例化的代码是这样写的?
DaYan da = new DaYan();
第一个出现的DaYan是类的数据类型,这个类是我们定义的,所以他的数据类型就是我们的类名,da 是对象的变量名称, new是执行类的构造方法 在堆内存中创建对象的空间 这里比较难以理解了 说人话就是 将 类 转化成 对象。 第二个是使用创建对象时需要的类,()是使用这个类的构造函数需要的参数
然后使用
对象.属性
对象.方法([参数])
使用对象的属性与方法
构造函数
那什么是构造函数?我们之前讲的构造函数是怎么一会事?我们都知道使用new可以创建类的对象并且调用构造函数,那么什么是构造函数呢:
我们可以在类里面创建一个特殊的方法,这个方法必须是 public 而且 没有返回值!且不是静态,且方法名称必须要和类名一致
public class DaYan{
String _name;
int _age;
public DaYan(){
// 创建大雁的构造方法
System.out.print("大雁类被构造成了对象");
}
}
程序是这么执行的:
带参数构造器
就是带有参数的构造器,我们要创建一个学生类,但是我想要自定义他的姓名 年龄 就可以使用构造器来执行
在java中,如果你没有给一个类手动的去定义一个构造函数,那么程序就会自动的创建一个无参数的构造函数,只不过这个方法里面什么也没有,一旦我们创建了,无论是有参数还是无参数,程序都不会给我们创建构造函数了,所以当我们创建了一个有参数的构造方法,记得重载一个无参数的构造方法,这样方便我们什么也不传的情况下实例化对象。
this 关键字
在之前我们使用了this关键字,其实他可以在类里面模拟实例化一个该类的对象
字段的包装
在玩游戏的时候,当角色的血量小于0的时候判断该人物时候死亡,我们何尝不可以在给血量赋值的时候顺便检测检测血量呢,这样我们就可以省去每次减去血量判断人物的代码了,直接将扣血与检测合为一体,岂不乐哉?
我们可以使用包装实现这个功能,在包装变量前,这个变量叫做字段,包装变量后,这个变量叫做属性,字段是私有的,属性是公共的
这就是今天的内容了,谢谢观看