Day5:面向对象的定义(上)

    1、类与对象的关系

    类就是对象的描述。
    对象就是存在的可以被操作的实体。
    
    
    需求:描述一个汽车。
    描述两方面:属性,行为。
    属性:轮胎数。颜色。
    行为:运行。
    
    其实类中定义的都是成员:
    成员变量-----属性。
    成员函数-----行为。
    class Car
    {
        //1,描述属性。
        int num;
        String color;
        void run()
        {
            System.out.println(num+"::"+color);
        }
    
        /*
        public static void main(String[] args)
        {
            //创建Car的实体(对象)通过new。
            new Car();
        }
        */
    }
    
    //描述实物的目的就是为了创建实体。
    
    
    
    class CarDemo 
    {
        public static void main(String[] args) 
        {
            //创建Car的实体对象。
            new Car();
        }
    }

    图例

     

    2、数据类型的引用与面向对象

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

    //描述汽车。
    /*
    需求:描述一个汽车。
    描述两方面:属性,行为。
    属性:轮胎数。颜色。
    行为:运行。
    */
    class Car
    {
        int num;
        String color;
        void run()
        {
            System.out.println(num+"....."+color);
        }
    }
    
    
    /*
    成员变量和局部变量的区别?
    
    1,源代码的位置:
    成员变量定义在类中,该变量在整个类访问有效。
    局部变量定义在方法中,该变量只在方法内有效。
    
    2,内存中的位置:
    成员变量在堆内存的对象中存储。成员变量所属于对象。
    局部变量在栈内存的方法中存储。局部变量所属于方法。
    
    3,初始化。
    成员变量都有默认的初始化。根据类型不同初始化值不同。
    局部变量没有默认初始化。使用时,必须初始化才可以用。
    
    
    */
    
    
    class CarDemo 
    {
        public static void main(String[] args) 
        {
            //创建对象。
            Car c = new Car();
    //        c.num= 4;
    //        c.color = "red";
    //        c.run();
    
            Car c1 = new Car();
    //        c1.num = 4;
    //        c1.color = "red";
    //        c1.run();
            
            show(c);
            show(c1);
    
    
    
            /*
            匿名对象。
    
            Car c = new Car();
            c.run();
            
    
            简化成:
            new Car().run();
            创建对象只为调用一次方法,可以使用匿名对象完成。
            匿名对象可以作为实参传递。
    
    
            Car c = new Car();
            c.num = 4;
            c.color = "red";
            c.run();
    
            new Car().num = 5;
            new Car().color = "blue";
            new Car().run();
            
            */
            show(new Car());
        }
    
        public static void show(Car c)
        {
            c.num = 3;
            c.color = "black";
            c.run();
        }
    }

     

    4、对象中构造函数的作用

    class Person
    {
    
        private  String name;
        Person(String s)
        {
            name = s;
        }
        public void setName(String s)
        {
            name = s;
        }
    
        Person()
        {
            System.out.println("person()....run");
        }
        
        Person(int x)
        {
            System.out.println("person(x)...."+x);
        }
    }
    /*
    对象会自动调用对应的构造函数。
    构造函数作用:就是对对象进行初始化的。
    
    
    揭秘:
    类中没有定义过构造函数,那么new对象到底是怎么初始化的呢?
    
    其实class定义的类中,在没有声明任何构造函数的情况下,类中默认会有一个空参数的构造函数。
    
    如果类中自定义了构造函数,默认的构造函数就没有了。
    
    构造函数在类中有多个的情况下,是以重载的形式存在的。
    */
    
    
    class ConstructorDemo 
    {
        public static void main(String[] args) 
        {
            new Person();
        }
    }

     

    5、过程和对象的区别

     

    6、面向对象的概念

    面向过程   面向对象。
    
    
    将大象装进冰箱里。
    按照面向过程的思考方式:
    1,打开冰箱。
    2,存储大象。
    3,关闭冰箱。
    
    c语言。
    
    
    
    按照面向对象的思考方式:
    1,冰箱打开。
    2,冰箱存储。
    3,冰箱关闭。
    
    面向对象基于面向过程。
    将更多的动作进行封装。
    想要使用动作(函数)的时候,需要先找到对象。
    
    
    举例:买组装机。
    面向对象总结:
    1,它是一种思想,更符合现在人们的思考习惯。
    2,从以前的过程的执行者,转成现在的对象的指挥者。
    3,将复杂的事情简单化了。
    
    
    面试中的面向对象:
    
    
    
    人开门。名词提炼法。先找出需求中的对象。
    
    class 人
    {
        void 开门(门 x)
        {
            x.开();
        }
    }
    class 门
    {
        void 开()
        {
            //门轴,弹簧。
        }
    }
    
    如何明确具体的动作定义到哪个对象中呢?
    功能中用到了哪个对象中的内容,就把功能定义到哪个对象中。
    
    以后开发:
    不断的描述对象,创建对象,使用对象,并维护对象之间的关系。

     

    本博客所有文章如无特别注明均为原创。
    复制或转载请以超链接形式注明转自Who am I ?,原文地址《Day5:面向对象的定义(上)
    标签:
    喜欢 | 0
    分享:

还没有人抢沙发呢~