Java的对象创建与使用
- 类与对象的概念
类与对象的概念
首先我们要知道什么是类?
类在实际的现实中是不存在的,是一个抽象的概念。是人类进行“思考、总结、抽象”的一个结果。把不同的东西、事务的分类。
类的本质上是显示世界当中,某个事务具有共同特征,将这些共同特征提取出来形成的概念就是一个“类”,“类”就是一个模板。
然后我们要知道什么是对象?
对象是实际存在的个体。(真实存在)对象的出现就是为了我们人类方便理解的。在java语言中,想要得到“对象”,必须先定义“类”,“对象”是通过类在这个模板创造出来的。
类就是一个模板:类中描述的是所有对象的“共同特征信息”
对象就是通过类创建出的个体。
这几个术语你需要自己能够阐述出来: 类:不存在的,人类大脑思考总结一个模板(这个模板当中描述了共同特征。)
对象:实际存在的个体。
实例:对象还有另一个名字叫做实例。 实例化:通过类这个模板创建对象的过程,叫做:实例化。
抽象:多个对象具有共同特征,进行思考总结抽取共同特征的过程。
类 --【实例化】–> 对象(实例) 对象 --【抽象】–> 类
类是一个模板,是描述共同特征的一个模板,那么共同特征包括什么呢?
比如定义一个学生类
public class Student {
// 属性
// 姓名
// 性别
// 身高
// 方法
public .... sing(){
}
public .... dance(){
}
public .... study(){
}
....
}
然后我们就来了解怎么创建和使用类的对象?
1、类的定义
类的定义语法格式是这样的:
```java
[修饰符列表] class 类名 {
//类体 = 属性 + 方法
// 属性在代码上以“变量”的形式存在(描述状态)
// 方法描述动作/行为
}
注意:修饰符列表可以省略。
2、为什么属性是“以”变量的形式存在的?
假设我们要描述一个学生:
学生包括哪些属性:
学号: 110
姓名:“张三”
性别:‘男’ (true/false)
住址:“中国”
答案:是因为属性对应的是“数据”,数据在程序中只能放到变量中。
结论:属性其实就是变量。
变量根据出现位置进行划分:
方法体当中声明的变量:局部变量。
方法体外声明的变量:成员变量。(这里的成员变量就是“属性”)
3、在语法上怎么创建对象呢
类名 变量名 = new 类名();
接下来具体说说怎么创建对象和使用的
首先我们创建一个继续创建一个学生类
class Student{
//学生属性有哪些
//学号实例变量,基本数据类型
int id;
//姓名实例变量,但是属于引用数据类型
String name;
}
public class Test{
public static void main(String[] args){
//先创建对象
Student st = new Student();
//给对象里面属性赋值
st.id = 349;
st.name = "李四";
System.out.println("这个学生" + st.name + "的学号是" + st.id);
}
}
上面的对象实现是最简单的实现方式,但是往往我们实现为了让对象里面更丰富我们会用引用,用类名 变量名的方式来定义一个实例变量,这样我们就可以是对象的属性更丰富;接下来我来用代码演示一下:
//定义一个人类
class Person
{
//名字
String name;
//性别
boolean sex;
}
//定义一个房子类
class House
{
//面积
double area;
//房子的主人,这里就是引用类型的变量为了更方便的找到主人的各个属性
Person master;
}
//定义一个测试类
public class Test01
{
public static void main(String[] args){
//创建对象
Person person = new Person();
//给对象属性赋值
person.name = "王五";
person.sex = true;
//创建对象
House house = new House();
house.area = 103.4;
//这是把人的属性给了房子的主人,我们可以通过房子找到主人,也可以通过主人找到房子
house.master = person;
System.out.println("房子的主人的名字是:" + house.master.name);//当然你也可以用person.name
//当我们要修改主人的信息应该怎么改呢?
//首先我们重新创建对象
Person man = new Person();
//重新赋值
man.name = "李四";
house.master = man;
System.out.println("房子的主人的名字是:" + house.master.name);
}
}