zoukankan      html  css  js  c++  java
  • 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 开()
        {
            //门轴,弹簧。
        }
    }
    
    如何明确具体的动作定义到哪个对象中呢?
    功能中用到了哪个对象中的内容,就把功能定义到哪个对象中。
    
    以后开发:
    不断的描述对象,创建对象,使用对象,并维护对象之间的关系。
  • 相关阅读:
    thinkphp3.1.3验证码优化
    php导出数据为CSV文件DEMO
    python学习笔记十七:base64及md5编码
    linux运维笔记
    [转]如何像Python高手(Pythonista)一样编程
    用gulp清除、移动、压缩、合并、替换代码
    [蓝桥杯][2017年第八届真题]小计算器(模拟)
    [蓝桥杯][2017年第八届真题]发现环(基环树输出环)
    [蓝桥杯][2017年第八届真题]合根植物(并查集)
    省赛训练5-3(四个签到题)
  • 原文地址:https://www.cnblogs.com/vijay/p/3502903.html
Copyright © 2011-2022 走看看