|
|
|
面向对象: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]+",");elseSystem.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私有时,在如此访问就会编译失败。} |
|