• 面向对象


     1相关概念的理解

    1.1面向过程、面向对象

    面向过程与面向对象都是编程中,编写程序的一种思维方式。

    面向过程的程序设计方式,是遇到一件事时,思考“我该怎么做”,然后一步步实现的过程。(职员思想)

    面向对象的程序设计方式,是遇到一件事时,思考“我该让谁来做”,然后那个“谁”就是对象,他要怎么做这件事是他自己的事,反正最后一群对象合力能把事就好就行了。(领导思想)

     

    1.2面向对象思维方式的好处

    面向对象思维方式是一种更符合人们思考习惯的思想

    面向过程思维方式中更多的体现的是执行者(自己做事情),面向对象中更多的体现是指挥者(指挥对象做事情)。

    面向对象思维方式将复杂的问题简单化。

     

    2类与对象

    2.1定义类

    事物其实就是由特点(属性)和行为(功能)组成的。

    通过计算机语言Java来描述这个事物,就是定义类,

    定义类的格式:

    public class 类名 {

    //可编写0至n个属性

        数据类型 变量名1;

        数据类型 变量名2;

     

    //可编写0至n个方法

    修饰符 返回值类型 方法名(参数){

      执行语句;

      }

    }

    Tips:自定义类中:有main方法,其他方法就要加static,没有main,就不用加。

    例:

    public class Car {
        String color;//颜色
        int tyre;//轮胎个数
         
        //功能:跑
        public void run(){
            System.out.println("颜色为"+color+",轮胎个数为"+tyre+"的小汽车在跑");
        }
    }
    public class Test {
        public static void main(String[] args) {
            Car c=new Car();
            c.color="红色";
            c.tyre=4;
            c.run();
        }
    }

    2.2成员变量和成员方法

    类的真正意义就是在描述事物。属性和功能统称为事物中的成员。

    事物的成员分为两种:成员属性和成员功能。

    成员属性在代码中的体现就是成员变量

    成员功能在代码中的体现就是成员方法

    2.3类和对象的区别

    类是对某一类事物的抽象描述,而对象用于表示现实中该类事物的个体。 

    举例:

    类是模型

    对象是实体

    设计时,是先有实体,再抽象出模型。

    实际生产时,是先有模型,再有实体。

    实际编程时,也是如此。

    2.4局部变量和成员变量区别

    1)定义的位置不同

    成员变量定义在类中

    局部变量定义在方法中或块(大扩号)中

    例:

    public class Student {
        String name;  //成员变量
        int age; //成员变量
        String sex; //成员变量
         
        public void study(String name){ //局部变量
            int book=0; //局部变量
            System.out.println("这个学生姓名为"+name+",年龄为"+age+",性别为"+sex); //这个name就成了局部变量,就近原则
            System.out.println("这个学生读了"+book+"本书");
        }
    }

    2)在内存中的位置不同

    成员变量存储在堆内存的对象中

    局部变量存储在栈内存的方法中

    3)生命周期不同

    成员变量随着对象的出现而出现在堆中,随着对象的消失而从堆中消失

    局部变量随着方法的运行而出现在栈中,随着方法的弹栈而消失

    4)初始化不同

    成员变量因为在堆内存中,所以有默认的初始化值

    局部变量没有默认的初始化值,必须手动的给其赋值才可以使用

    2.5基本类型和引用类型作为参数传递

    例:

    public class Test2 {
        public static void main(String[] args) {
            int a=1;
            double b=2;
            method1(a,b);
            System.out.println(a);
            System.out.println(b);
        }
        public static void method1(int a,double b){
            a=20;
            b=30;
        }
    }

    public class Test3 {
        public static void main(String[] args) {
            Student s=new Student();
            s.name="同学1";
            s.age=38;
            s.sex="男";
            method1(s);
            s.study();
        }
        public static void method1(Student s){
            s.name="同学2";
            s.age=18;
            s.sex="男";
        }
    }

    当引用变量作为参数传递时,这时其实是将引用变量空间中的内存地址(引用)复制了一份传递给了method1方法的s引用变量。这时会有两个引用同时指向堆中的同一个对象。当执行method1方法中的s.name="同学2"时,会根据s所持有的引用找到堆中的对象,并将其s属性的值改为同学2,method1方法弹栈。

    由于是两个引用指向同一个对象,不管是哪一个引用改变了引用的所指向的对象的中的值,其他引用再次使用都是改变后的值。

  • 相关阅读:
    cJSON库源码分析
    cJSON 使用详解
    day23
    day22
    作业21
    day21
    作业20
    day20
    作业
    day19
  • 原文地址:https://www.cnblogs.com/qq1312583369/p/10884628.html
Copyright © 2020-2023  润新知