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);
	}
}
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值