对象
概述
-
定义:
万物皆对象,客观存在的事物皆是对象。
是能够看得到摸得着的真实存在的实体。 -
对象的属性:
对象具有的各种特征,每个对象的每个属性都拥有特定的值。 -
对象的行为:
对象能执行的操作。
类和对象之间的关系
对象和类之间的关系:
- ①对象是计算机中具体的数据信息;类是信息的数据类型。
- ②对象是能够看得到、摸得着的真实存在的实体;类是对现实生活中一类具有共同属性和行为的事物的抽象。
- ③对象是类的实体;类是对象的抽象。
对象的创建和使用
创建对象
类名 对象名 = new 类名();
使用对象
// 使用成员对象
格式:对象名.变量名
// 使用成员方法
格式:对象名.方法名()
案例:
需要在phoneDemo类的所在包下,创建phone类。
// 110
public class phone {
//编写类的成员变量
String brand;
int price;
//成员方法
public void call(){
System.out.println("打电话");
}
public void sendMessage(){
System.out.println("发短信");
}
}
public class phoneDemo {
public static void main(String[] args) {
//创建对象
phone p = new phone();
//使用对象
//使用对象的成员变量
System.out.println(p.price);//输出0
//类phone的成员变量price 定义 int类型,其对应的默认值是0
System.out.println(p.brand);//输出null
//类phone的成员变量brand 定义 string类型,其对应的默认值是null
//在没有定义具体值的时候,输出的是变量的默认值。
//给变量赋值再输出
p.price = 2999;
p.brand = "小米";
System.out.println(p.price);
System.out.println(p.brand);
//使用对象的成员方法
p.call();
p.sendMessage();
}
}
单个对象
案例:学生
思路:
①定义一个学生类(Student)
成员变量:name、age
成员方法:study();
doHomework();
②定义一个学生测试类(StudentDemo)
要做测试,有主方法 = main方法
③在学生测试类中通过创建对象完成对成员变量和成员方法的调用
给成员变量赋值,输出成员变量的值
调用成员方法
对象内存图(单个对象)
图示:
代码:
学生类的创建以及测试代码。
// 110
//定义学生类
public class Student{
// 定义成员变量
String name;
int age;
//定义成员方法
public void study(){
System.out.println("学习");
}
public void doHomework(){
System.out.println("做作业");
}
}
//写测试类,要注意在main方法里写对象的创建和使用。
public class StudentDemo {
public static void main(String[] args){
//创建对象
Student stu = new Student();
System.out.println(stu);//com.itheima110.Student@1b6d3586
//使用成员对象
System.out.println(stu.name);//null
System.out.println(stu.age);//0
//对成员对象赋值
stu.name = "xhj";
stu.age = 25;
System.out.println(stu.name);//xhj
System.out.println(stu.age);//25
//使用成员
stu.study();//学习
stu.doHomework();//做作业
}
}
多个对象
对象内存图(多个对象)
图示:
2022/6/29
同一类实例化的对象,对象属性不同,对象方法相同;
同一类实例化的对象,在堆内存开辟的存储空间不同;
代码:
// 110
public class StudentDemo2 {
public static void main(String[] args){
//创建第一个对象
Student stu1 = new Student();
stu1.age = 30;
stu1.name = "汐沫";
System.out.println(stu1);
//com.itheima110.Student@1b6d3586
System.out.println(stu1.age + ", " + stu1.name );
// 输出30, 汐沫
stu1.study();//学习
stu1.doHomework();//做作业
//创建第二个对象
Student stu2 = new Student();
stu2.age = 20;
stu2.name = "西贝";
System.out.println(stu2);
//com.itheima110.Student@4554617c
System.out.println(stu2.age + ", " + stu2.name );
//输出20, 西贝
stu2.study();//学习
stu2.doHomework();//做作业
}
}
多个对象指向相同的内存图
图示:
2022/6/29
多个对象指向相同的内存区域,一个对象修改成员属性,则另一个对象的成员属性也会被修改。
代码:
// 110
//多个内存指向相同内存图
public class StudentDemo3 {
public static void main(String[] args){
//创建对象1
Student stu1 = new Student();
stu1.age = 33;
stu1.name = "汪苏泷";
System.out.println(stu1);
//com.itheima110.Student@1b6d3586
System.out.println(stu1.name + ", " + stu1.age);
//汪苏泷, 33
//创建对象2
Student stu2 = stu1;
stu2.age = 36;
stu2.name = "许嵩";
System.out.println("stu2:" + stu2);
//stu2:com.itheima110.Student@1b6d3586
System.out.println("stu1:"+stu1);
//stu1:com.itheima110.Student@1b6d3586
System.out.println("stu2:"+stu2.name + ", " + stu2.age);
//stu2:许嵩, 36
System.out.println("stu1:"+stu1.name + ", " + stu1.age);
//stu1:许嵩, 36
}
}
源文件声明规则
概述
一个源文件只能有一个public类。(源文件 = java文件)
一个源文件可以有多个非public类。
源文件的名称应该和public类的类名保持一致。
如果一个类定义在某个包中,那么package语句应该在源文件的首行。
如果源文件包含import语句,应该放在package和类定义之间。如果没有package语句,应该在源文件在最前面。
import语句和package语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明。