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 开()
    {
        //门轴,弹簧。
    }
}

如何明确具体的动作定义到哪个对象中呢?
功能中用到了哪个对象中的内容,就把功能定义到哪个对象中。

以后开发:
不断的描述对象,创建对象,使用对象,并维护对象之间的关系。
原文地址:https://www.cnblogs.com/vijay/p/3502903.html