Day6 面向对象

面向过程强调的是过程
面向对象强调的是对象
1.符合人类思考习惯 2.复杂问题简单化 3.执行者变成指挥者
类 事物的描述 关注两方面 一个是属性 一个是行为
对象 类的实例 new 产生对象
class A
{
.....
}
class demo
{
public static void main(String args[])
{
A 对象名 =new A(); 对象的创建在内存中的堆内存(对象都在 都有默认初始值)中
}
}
对象封装自己的数据 包括属性和行为
car c1=new car(); car c2=new car();
c2=c1; c1和c2的对象的地址指向相同 生死与共
c1.num=4; 这个赋值是给c1里的num值赋值 不是定义里的num
c2.colour="red"; c1.run();

成员变量和局部变量的区别
1.
成员变量定义在类中 整个类都可以访问
局部变量定义在函数 语句 局部代码块中 只在所属区域有效
2.
成员变量存在于堆内存的对象里 有默认初始化值
局部变量存在于栈内存的方法中 没有默认初始化
3.
成员变量随对象的创建而存在 随对象的消失而消失
局部变量随着所属区域的执行而存在 随着所属区域的结束而释放

public static void show(Car c) 类做参数
{
c.num;
}

匿名对象
就是定义对象的简写格式
Car c=new Car(); c.show();
等价 new Car().show(); 不给对象的名字 直接使用
[注]
1 当对象对方法仅进行一次调用时,可以简写为匿名对象 不在栈内存创建对象
class Car
{
int num;
String color;
void show()
{
System.out.println(num+"...."+color);
}
}
class classdemo
{
public static void main(String [] args)
{
new Car().num=5; 用完即销毁 因为没有任何指向
new Car().color="red"; 用完即销毁
new Car().show(); 结果为0....null
}
}

2 public static void show(new Car) 当做参数 以后会做介绍
Day6 面向对象
class test //基本数据类型参数传递
{
public static void main(String [] args)
{
int x=3;
show(x);
System.out.println("x="+x);
} 结果为3
public static void show(int x)
{ x=4; }
}
基本类型做参数只是形参传入 不改变本身的值 改变的是函数内部的数据
引用类型做参数是把地址传递给了函数 改变了本身的值
class test//引用数据类型参数传递
{
int x=3;
public static void main(String [] args)
{
test d=new test();
d.x=9;
show(d);
System.out.println(d.x);
// 差别在于堆内存中的数据没有被弹出
}
public static void show(test d)
{
d.x=4;
}
}