Java学习个人备忘录之面向对象概念

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

类与对象之间的关系?
类:一类事物的描述。
对象:该类事物的实例。在java中通过new来创建的。
举例来说,类就是汽车说明书,类只能在理论上造一辆汽车,并且这个说明书非常明确的写了汽车有哪些部件、可以干什么等等信息,我们可以通过这个说明书(类)得知这辆车全方位的信息;对象就是按照这个说明书造出来的一辆汽车实体,是真实存在的,可以开走的。

下面我们用类描述一辆小汽车:

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

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

class Car
{
	int num;  //成员变量,汽车的属性
	String color;//成员变量

	void run()  //成员函数汽车的功能
	{
		System.out.println(num + "..." + color);
	}
}

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

 

 

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

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

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

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

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


类类型参数

class CarDemo
{
	public static void main(String[] args)
	{
		Car c1 = new Car();
		Car c2 = new Car();
		show(c1);
		show(c2);
	}

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

 

匿名对象
new car();  //匿名对象,其实就是定义对象的简写格式
new Car().run();

没有将car对象赋值给某一变量。

1,当对象对方法仅进行一次调用的时候,就可以简化成匿名对象
2,匿名对象可以作为实际参数进行传递


基本数据类型参数传递

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;
		return ;
	}
}

这道题的结果是3。
首先执行主函数,主函数进栈,然后执行int x = 3; 现在x的值为3。然后调用show函数,所以show 函数进栈,将x = 3 传进去,show函数将x赋值为4,show函数return,show函数出栈,这时,栈中只剩下了主函数中的x = 3 ,然后输出。所以结果为3。

 

引用数据类型参数传递

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;
	}
}

结果为4。
首先执行主函数,主函数进栈,然后执行Demo d = new Demo(); 这时就在堆中开辟一块空间,同时将它的地址赋值给栈中的d,它中的x赋值为3,执行 d.x = 9; 堆中的x就被赋值为9;执行show(d);  show函数进栈,将对象d传入,堆中的x又被赋值为4;show函数执行完毕,show函数出栈;这时输出d.x。结果就为4。

 

函数的封装

class Person
{
	private int age;
	public void setAge(int a)
	{
		if (a < 0)
	{
		System.out.println("年龄不能为负数");
		return;
	}
		age = a;
		speak();
	}
	void speak()
	{
		System.out.println("age=" + age);
	}
}

class Test
{
	public static void main(String[] args)
	{
		Person p = new Person();
		p.setAge(20);
	}
}
posted @ 2017-08-31 19:44  vector121  阅读(190)  评论(0编辑  收藏  举报