面向对象思想

面向对象:
	1,符合现实中人们思考习惯的一种思想。
	2,它让程序员的角色在做这转变,从原来的执行者变成指挥者。
	3,将复杂的问题简单化。

	对象无处不在,一切皆对象。

	对象是现实中实实在在存在个体,那么我们需要使用计算机语言对其进行描述。
	在java当中,描述事物是通过类来完成,在计算机中操作事物是通过new 该类的对象,并指挥对象完成的。

	例:
	制造汽车,对汽车进行描述:图纸。对应的就是java中的类class。
		  通过图纸生成汽车:对象,对应的就是java通过new在堆内存中产生的实例。

	通过java语言编写程序,其实就是在不断的定义类,并定义类中的成员。
	成员包括:成员变量(事物的属性)和成员函数(事物的行为)。

	对象的存在有什么好处?或者说为什么要创建对象呢?
	对象可以用于封装数据。可以在对象中定义属性和行为,并被指挥。

	体现在程序中,当要完成功能时,先明确java中是否已提供了已有的对象。如果有,那么可以直接指挥该对象的功能。
	如过该对象不存在,定义一个对象,并将需要的功能封装到该对象当中,以便以后该对象的重用。

	对象如何使用呢?
	通过new的方式来建立,并通过 “对象.对象成员” 的方式指挥对象做事情。

	需求:
	对数组的常见操作:取最值,排序,查找,变量打印。。。
	每一次出现数组需要这样的操作都需要定义对应的功能。较为麻烦。
	将这些功能都进行封装。封装到对象当中,以便重用。
	早期:
		int[] arr = new int[3];

		public int getMax(int[] arr)
		{
			int max = arr[0];
			for(int x=1; x<arr.length; x++)
			{
				if(arr[x]>max)
					max = arr[x];
			}
		}
		public int getMin(int[] arr)
		{
			int min = arr[0];
			for(int x=1; x<arr.length; x++)
			{
				if(arr[x]<min)
					min = arr[x];
			}
		}

		
	对象的出现。现在常用情况:

		class ArrayTool
		{
			public int getMax(int[] arr)
			{
				int max = arr[0];
				for(int x=1; x<arr.length; x++)
				{
					if(arr[x]>max)
						max = arr[x];
				}
			}
			public int getMin(int[] arr)
			{
				int min = arr[0];
				for(int x=1; x<arr.length; x++)
				{
					if(arr[x]<min)
						min = arr[x];
				}
			}
			public void printArray(int[] arr)
			{
				for(int x=0; x<arr.length; x++)
				{
					if(x!=arr.length-1)
						System.out.print(arr[x]+",");
					else
						System.out.println(arr[x]);
				}
			}

		}
		

		class Demo
		{
			public static void main(String[] args)
			{
				int[] arr = new int[2];

				ArrayTool at = new ArrayTool();
				int max = at.getMax(arr);

				at.printArray(arr);
			}
		}

	----------------------------了解----
	匿名对象:其实就是没有名字的对象,可以理解为创建对象的简化形式。
	使用情况:
		1,当只对对象的方法进行一次调用的使用,可以使用匿名对象。
			Car c = new Car();//简化成;new Car().run();
			c.run();
			//c.run();
		2,匿名对象可以作为实际参数进行传递。
			show(new Car());

			public void show(Car c)//Car c = new Car();
			{
				c.run();
			}
	-----------------------------------

	面向对象的第一个特征:封装:
	什么是封装呢?
		其实就是隐藏实现细节,提高了安全性。

		在代码的体现:
			函数就是一个最小最直接的封装体。
			类本身也是一种封装。
			包也是一个封装体。
			SSH框架也是一种封装。
			tomcat服务器软件。
		
		在通过类建立对象后,通过对象调用成员,可以使用使用对象的属性。
		但是直接对属性操作容易出现安全隐患如:人的年龄,如果被直接操作容易出现负数。
		
		为了提高安全性,所以避免直接对象属性进行访问,使用了一个关键字:private 私有。
		私有只修饰成员,并该成员只在本类中有效。

		如何可以对人对象的age进行赋值呢?
		通过对外提供方法来间接访问age属性。而该方法已有自己的规范。set。get。
		
		private只是封装特性的一种体现形式而已。

		class Person
		{
			private int age;
			public void setAge(int x)
			{
				age = x;
			}
			public int getAge()
			{
				return age;
			}
			void speak()
			{
				System.out.println("age="+age);
			}
		}
		main()
		{
			Person p = new Person();
			p.age = -20;//描述的事物不具备负数值。当age私有时,在如此访问就会编译失败。
		}




 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值