概述✈️ 🚀 🛸
什么是对象?
对象(Object)是一个应用系统中的用来描述客观事物的实体,是有特定属性和行为(方法)的基本运行单位。是类的一个特殊状态下的实例。对象可以是一个实体、一个名词、一个可以想象为有自己标识的任何东西,可以概括来说:万物皆对象。
什么是类?
类(Class)是Java代码的基本组织模块,使用来描述一组具有共同属性和行为对象的基本原型。是对这组对象的概括、归纳和描述表达。类是对象的模板,它定义了本类对象的所拥有的属性集和行为集,是对一组具有相同属性和相同方法的对象的定义。
类与对象有什么关系?
类和对象之间是抽象与具体的关系。类是一个模板,是对一类事物的抽象描述,而对象用于表示现实中该事物的个体。类是在对象之上的抽象,对象则是类的具体化,是类的实例。
类必须通过对象才可以使用,而对象中的属性和行为必须在类中定义。
代码实现类与对象的关系✈️ 🚀 🛸
-----》定义一个学生类和学生对象
定义一个类,用来模拟“学生”事务,其中就有两个组成部分
定义一个类,用来模拟“学生”事务,其中就有两个组成部分 属性(是什么): 姓名 年龄 行为(做什么事): 吃饭 睡觉 学习 对应到java的类当中, 成员变量(属性): String name;//姓名(数据类型 变量名称) int age;//年龄 成员方法(行为): public void eat(){} //吃饭 public void sleep(){} //睡觉 public void studying(){} //学习 注意事项 1.成员变量是直接定义在类当中的,在方法外边 2.成员方法不要写static关键字。
public class Student {
//先写——成员变量
String name;//姓名
int age;
//再写——成员方法
public void eat(){
System.out.println("吃饭饭");
}
public void sleep(){
System.out.println("睡觉觉");
}
public void studying(){
System.out.println("学习!");
}
}
根据Student这个类,创建一个Studnet对象
通常情况下,一个类并不能直接使用,需要根据类创建一个对象,才能使用 1.导包: 也就是指出需要使用的类,在什么位置。 import 包名称.类名称; import annian-code.MianXiangDuiXiang.Student; 对于和当前类属于同一个包的情况,可以省略导包语句不用写。 2.创建 格式: 类名称 对象名 = new 类名称(); 3.使用 两种情况 1.使用成员变量:对象名.成员变量 2.使用成员方法:对象名.成员方法名(参数) {也就是,想用谁,就用对象名点谁} 注意事项: 如果成员变量没有进行赋值,那么将会有一个默认值,规则和数组一样,
public class Demo02Student {
public static void main(String[] args) {
// 1.导包
//我需要使用的Student类,和我自己Demo02Student位于同一个包下,所以可省略导包语句不写
//2.格式:
// 类名称 对象名 = new 类名称();
Student stu=new Student();//根据Student类,创建了一个名为stu的对象
//3.使用成员变量:对象名.成员变量
System.out.println(stu.name);//null
System.out.println(stu.age);//0默认值
//改变对象当中成员变量数值内容
//将右侧的字符串,赋值交给stu对象当中的name成员变量
stu.name="赵丽颖";
stu.age=30;
System.out.println(stu.name);
System.out.println(stu.age);
System.out.println("=================");
// 使用成员方法:对象名.成员方法名(参数)
stu.eat();
stu.sleep();
stu.studying();
}
}
--------------------------------------------------------------------------------------------------------------------------------
对象内存关系✈️ 🚀 🛸
这里我们再定义一个Phone类和对象,来简述一下对象内存关系
Phone类
public class Phone {
//成员变量
String brand;//品牌
double price;//价格
String color;//颜色
//成员方法
public void call(String who){
System.out.println("给"+who+"打电话");
}
public void sendMessage(){
System.out.println("群发信息");
}
Phone对象
public class Demo02Phone {
public static void main(String[] args) {
Phone pho=new Phone();
//成员变量
System.out.println(pho.brand);//品牌null
System.out.println(pho.price);//价格0.0
System.out.println(pho.color);//颜色null
System.out.println("=========================");
pho.brand="华为";
pho.price=5999.9;
pho.color="幻境";
System.out.println(pho.brand);//华为
System.out.println(pho.price);//5999.9
System.out.println(pho.color);//幻境
System.out.println("=========================");
//成员方法
pho.call("任正非");
pho.sendMessage();//群发短信
}
}
一个程序内存划分为:堆、栈、方法区
我们的主方法和类的成员方法均在方法区当中
程序开始,main方法先进栈,创建Phone对象,凡是对象都要进入到堆当中,包括成员变量和成员方法,这里对象是通过地址值来进行传递的,即图上的0x666
当one.brand,one.color,one.call() , one.sendMessage() 之后,成员变量被赋值,成员方法被调用。
当one.call(), call方法进栈,以压栈的方式进入,同样,通过地址值0x333传递,当one.sendMessage() 同上过程。
随后,当程序方法执行完,sendMessage先出栈,call出栈,最后main方法出栈。
关于堆栈、方法区的知识大家可以去面向百度更加深刻的了解。
《以上为本人对类和对象的基本认识,如有错误,请大家批评指正》
✈️ 🚀 🛸 ✈️ 🚀 🛸 ✈️ 🚀 🛸 ✈️ 🚀 🛸
一起努力,一起加油
✈️ 🚀 🛸 ✈️ 🚀 🛸 ✈️ 🚀 🛸 ✈️ 🚀 🛸