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 开()
        {
            //门轴,弹簧。
        }
    }
    
    如何明确具体的动作定义到哪个对象中呢?
    功能中用到了哪个对象中的内容,就把功能定义到哪个对象中。
    
    以后开发:
    不断的描述对象,创建对象,使用对象,并维护对象之间的关系。
  • 相关阅读:
    转:va_list、va_start、va_arg、va_end的原理与使用
    学习Docker的记录
    Google Code 优秀的开源工具
    转载(程序在内存中运行的奥秘)
    C# 和 Java 之争之我见
    揭秘ASP.NET 2.0的Eval方法(转)
    IIS6.0 架构(二)
    IE6 position:fixed bug (固定窗口方法)(转载)
    用FileStream上传图片转换成二进制,在本地用行,传到服务器上去出现如下错误
    异常处理
  • 原文地址:https://www.cnblogs.com/vijay/p/3502903.html
Copyright © 2011-2022 走看看