1. 类只是一个模型一样的东西,用来对一个实体进行描述,限定了类有哪些成员
2. 类是一种自定义的类型,可以用来定义变量. 相当于搞了个类似int,double的新类型,不同的只是int,double是JAVA的内置类型
3. 一个类可以实例化出多个对象,实例化出的对象 占用实际的物理空间,存储类成员变量
4. 通俗说,类就像一个说明书,一个建筑的大概图样设计,(只设计出需要什么东 西,但是并没有实体的建筑存在 )而实例化对象就需要 你真的去搞一个实体的东西,并按说明书给他描述呈现出来。
上述内容用JAVA表示类似如下
具体代码呈现,,以一个学生为例
// 定义 学生 的类型
public class Student {
// 成员属性(变量)
public String name;
public String gender;
public int age;
public double salary;
// 成员行为(方法)
public void Doclass (){};
public void Eating (){};
public void Sleeping (){};
}
// 对具体学生进行 实例化呈现
public static void main(String[] args) {
// 学生1 可可
Student student1 = new Student();
student1.name = "coco";
student1.gender = "女";
student1.age = 15;
student1.salary = 1234.5;
student1.Doclass ();
student1.Eating ();
student1.Sleeping ();
// 学生2 杰克
Student student2 = new Student();
student1.name = "Jack";
student1.gender = "男";
student1.age = 18;
student1.salary = 5432.5;
student1.Doclass();
student1.Eating();
student1.Sleeping();
}
注意 !
1. 用new创建一个新对象的实例
2. 使用. 访问对象中的属性和方法
3. 同一个类可以创建多个实例
如果上述的private 定义了年龄和姓名,就只能在本Student类中使用,这样一来想改,就直接直接在当类中多设置如图,SetName 和 GetName 两个函数修改(快捷修改方式:鼠标右键
然后就会出现
)
Arrays 和 Data 都是import java.util.低下的文件
我们可以合二为一
当然,若不同的路径下的文件都有相同名字的(如Date)的文件,则无法同时定义两个*
见“7.类与对象 /23”
由上图可知,我们的“类”是Student
“对象”则是自己分别定义的Student student1 =new Student();中的student1
调用静态方法: student.classRoom() (用类来调用)
调用非静态方法 : student1.function() (用对象来调用)
【静态方法特性】
1. 不属于某个具体的对象,是类方法
2. 可以通过对象调用,也可以通过类名.静态方法名(...)方式调用,更推荐使用后者
3. 不能在静态方法中访问任何非静态成员变量
类似于引用的名字 如下this. year类似 于d. year(个人理解 )
this只能在成员方法中使用
this是“成员方法”第一个隐藏的参数,编译器会自动传递,在成员方法执行时,编译器会负责将调用成员方法 对象的引用传递给该成员方法,this负责来接收
奇怪的一点是,之前的局部变量都需要初始化 赋值,而在创建类的时候,成员变量却不用,这是为什么呢?
原因是,在JAVA中,它有给一个隐藏的初始化赋值的构造 方法
这个隐藏的构造方法中,默认初始化的变量如下表格
数据类型 | 默认值 |
---|---|
byte | 0 |
char | '\u0000' |
short | 0 |
int | 0 |
long | 0L |
reference | null |
boolean | false |
double | 0.0 |
float | 0.0f |
如果你要另行初始化一个值,需要通过构造方法来实现
即:构造方法的作用, 就是给对象中的成员进行初始化, ,并且这个过程中没有给对象新开辟空间
构造 方法:一般用public修饰 ,方法名必须与类名相同
如下创建了一个Student型的对象,并且通过如下的赋值调用了Student(String,String,int,doublle)的构造方法
小总结:
1. 构造方法的方法名必须与类名相同
2. 没有返回值,void也不能用,必须是 public 方法名(){};
3. 在创建对象的编译器 自动调用,且在对象的生命周期内只能调用一次
(举个例子,你一生只能出生一次吧)
4. 支持重载,可以根据不同需求设置不同参数的构造方法,如下
5. 可以通过this()来调用其他构造方法来简化代码
且this必须是构造方法第一条语句