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 开()
        {
            //门轴,弹簧。
        }
    }
    
    如何明确具体的动作定义到哪个对象中呢?
    功能中用到了哪个对象中的内容,就把功能定义到哪个对象中。
    
    以后开发:
    不断的描述对象,创建对象,使用对象,并维护对象之间的关系。
  • 相关阅读:
    免费的视频、音频转文本
    Errors are values
    Codebase Refactoring (with help from Go)
    Golang中的坑二
    Cleaner, more elegant, and wrong(msdn blog)
    Cleaner, more elegant, and wrong(翻译)
    Cleaner, more elegant, and harder to recognize(翻译)
    vue控制父子组件渲染顺序
    computed 和 watch 组合使用,监听数据全局数据状态
    webstorm破解方法
  • 原文地址:https://www.cnblogs.com/vijay/p/3502903.html
Copyright © 2011-2022 走看看