-
package com.zhy;
/**面向对象与面向过程
* 面向过程: 即面向功能, 需要什么功能就编写什么函数去实现, 是执行者
* 面向对象: 编写类,实现对象,调用对象的方法去实现功能, 是指挥者
*
* 面向对象:三个特性:封装、继承、多态
*/
//开发时:其实就是找对象使用,没有对象,就创建一个对象
//找对象,建立对象,使用对象,维护对象的关系
/**
* 类和对象的关系:
* 1:类: 对现实生活中的事物的描述
* 2:对象: 就是这类事物,实实在在存在的个体
*
* 现在中的对象: 张三、李四
* 描述时: 提取对象中共有的特征 有:姓名、年龄、性别、工作
* 将这些特征映射到java中, 描述就是Class定义的类
* 具体对象就是对应java在推内存中使用new建立实体
*
* 现实中---现有对象再有去描述对象特征的类
* 编程中---现有类才有对象
*/
//接下来简单的看个列子
/**
* 需求: 描述汽车(名字,颜色,轮胎数量)----描述事物就是描述事物的属性和行为
* 这分别对应了类的 属性变量 和 成员方法
* 定义类:----就是在描述事物,就是在定义属性和行为,
* 属性和行为共同成为类中的成员(成员变量和成员方法)
*
* 成员变量和局部变量
* 范围: 成员变量在作用于整个类中,局部变量作用于整个方法中,或者语句中
* 内存中的位置:
* 成员变量: 在推内存中因为对象的存在,才在内存中存在
* 局部变量: 在栈内存中
*/
class Car{
//描述颜色
String color = "白色";
//描述姓名
String name ="宝马x";
//描述轮胎数量
int num = 4;
//运行个方法
void run(){
System.out.println(name+"---"+color+num);
}
}
public class test6_obj {
public static void main(String[] args) {
//生产汽车: 在java中通过new操作符来完成 对象的创建
//其实就是在推内存中产生一个实体对象
Car car = new Car();
car.color = "red";
//调用它的方法
car.run();
// 匿名对象 --不带名称的对象
/**
*使用方式一: 当对对象的方法使用一次时,可以用匿名对象,使用比较简化
*如果对一个对象进行多个成员调用,必须给这个对象取名
*/
Car ss =new Car();
shows(ss);
new Car().run();
//使用方式二: 可以将匿名对象作为实际参数传递值
//shows(new Car());
/**
* Car sss =new Car();---内存解析
* 1.因为new用到了Car.class 所以会先找到Car,class文件并加载到内存中
* 2.执行该类中的static代码块,如果有的话,给Car.class类进行初始化
* 3.在推内存中开辟空间,分配内存地址
* 4.在堆内存中建立对象的特有属性,并进行默认的初始化
* 5.对属性进行显示初始化
* 6.对对象进行构造代码块初始化
* 7.对对象进行对应的构造函数初始化
* 8.将内存地址付给内存中的p变量
*/
Car sss =new Car();
shows(sss);
}
public static void shows(Car c){
c.color = "green";
c.name ="奔驰";
c.num=2;
c.run();
}
}