面向对象

来源:互联网 发布:成都淘宝运营公司 编辑:程序博客网 时间:2024/06/06 01:31

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------


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

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
0 0
原创粉丝点击