3.2-面向对象(类与对象之间的关系)

3.2 类与对象的关系

使用计算机语言就是不断的在描述现实生活中的事物。

java中描述事物通过类的形式体现,类是具体事物的抽象,概念上的定义。

对象即是该类事物实实在在存在的个体 。

3.2.1  类与对象( 图例)


3.2.2  类的定义
生活中描述事物无非就是描述事物的属性和行为。
•  如:人有身高,体重等属性,有说话,打球等行为。
Java中用类class来描述事物也是如此
•  属性:对应类中的成员变量。
•  行为:对应类中的成员函数。
定义类其实在定义类中的成员(成员变量和成员函数)。

3.2.3  成员变量和局部变量的区别?
成员变量:
•  成员变量定义在类中,在整个类中都可以被访问。
•  成员变量随着对象的建立而建立,存在于对象所在的堆内存中。
•  成员变量有默认初始化值。
局部变量:
•  局部变量只定义在局部范围内,如:函数内,语句内等。
•  局部变量存在于栈内存中。
•  作用的范围结束,变量空间会自动释放。
•  局部变量没有默认初始化值。

3.2.4  创建对象,使用对象

class Car//对
Car这类事物进行描述
{
String color = "red";
int num = 4;
void show()
{
System.out.println("color="+color+"..num="+num);
}
}
class CarDemo
{
public static void main(String[] args)
{
Car c = new Car();//建立对象
c.color = "black";//对对象的属性进行修改
c.show();//使用对象的功能。
}
}

3.2.5  对象内存结构
Car c1 = new Car();c1.color="blue";
Car c2 = new Car();


3.2.6  匿名对象
匿名对象是对象的简化形式
匿名对象两种使用情况
•  当对对象 方法仅进行 一次调用的时
•  匿名对象可以作为实际参数进行传递

/*
用java语言对现实生活中的事物进行描述。
通过类的形式来体现的。

怎么描述呢?
对于事物描述通常只关注两方面。
一个是属性,一个是行为。

只要明确该事物的属性和行为并定义在类中即可。

对象:其实就是该类事物实实在在存在的个体。

类与对象之间的关系?
类:事物的描述。
对象:该类事物的实例。在java中通过new来创建的。

*/


/*

描述小汽车

分析:
1,属性。
	轮胎数。
	颜色。 
2,行为。
	运行。



定义类其实就是在定义类中的成员。
成员:成员变量<-->属性,成员函数<-->行为。


成员变量和局部变量的区别:

1,
成员变量定义在类中,整个类中都可以访问。
局部变量定义在函数,语句,局部代码块中,只在所属的区域有效。

2,
成员变量存在于堆内存的对象中。
局部变量存在于栈内存的方法中。

3,
成员变量随着对象的创建而存在,随着对象的消失而消失。
局部变量随着所属区域的执行而存在,随着所属区域的结束而释放。

4,
成员变量都有默认初始化值。
局部变量没有默认初始化值。 



*/
class Car
{
	int num;
	String color;
	
	void run()
	{
		//int num = 10;
		System.out.println(num+"..."+color);
	}

}





class  CarDemo
{
	public static void main(String[] args) 
	{
		//在计算机中创建一个car的实例。通过new关键字。 
//		Car c = new Car();// c就是一个类类型的引用变量,指向了该类的对象。
//		c.num = 4;
//		c.color = "red";

//		c.run();//要使用对象中的内容可以通过  对象.成员 的形式来完成调用。

		

//		Car c1 = new Car();
//		c1.num = 4;
//		c1.color = "red";

//		Car c2 = new Car();
//		c2.num = 4;
//		c2.color = "red";

//		Car c1 = new Car();
//		Car c2 = new Car();
//		show(c1);
//		show(c2);

		/*
		匿名对象。没有名字的对象 。
		new Car();//匿名对象。其实就是定义对象的简写格式。



		Car c = new Car();
		c.run();

		new Car().run();
	

		1,当对象对方法仅进行一次调用的时候,就可以简化成匿名对象。
		
		new Car().num = 5;
		new Car().color = "green";
		new Car().run();

		2,匿名对象可以作为实际参数进行传递。

		*/

//		Car c1 = new Car();
//		show(c1);
		show(new Car());
	}

	//汽车改装厂。
	public static void show(Car c)//类类型的变量一定指向对象。要不就是null。 
	{
		c.num = 3;
		c.color = "black";
		System.out.println(c.num+"..."+c.color);
	}
}

基本数据类型参数传递和引用数据类型参数传递

//基本数据类型参数传递
class Demo 
{
	public static void main(String[] args) 
	{

		int x = 3;
		show(x);
		System.out.println("x="+x);
	}
	public static void show(int x)
	{
		x = 4;
	}
}

public class Demo {  
  
    private static int x;  
    public static void main(String[] args) {  
        name(x);  
        System.out.println(x);  
    }  
    public static void name(int x){  
        x++;  
    }  
  
} 

//引用数据类型参数传递
class Demo
{
	int x = 3;
	public static void main(String[] args)
	{
		Demo d = new Demo();
		d.x = 9;
		show(d);
		System.out.println(d.x);
	}
	public static void show(Demo d)
	{
		d.x = 4;
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值