面向对象的思想概述
1、什么是面向对象的思想
面向对象的思想是基于面向过程思想发展而来的。
面向过程:强调的是实现功能每一个步骤
面向对象:强调的是对象,然后由这个对象去调用功能
我们学习编程语言的目的,其实就是用来模拟现实世界的事物的 而我们现在所学习的语言叫做: java java中最基本的单位:类 所以,我们通过java把现实世界的事物给描述出来 所以我们要学习如何用java去描述一个现实世界的事物
得出一个对应关系:
事物: 类:
属性:用来描述事物的信息 成员变量:用来描述事物的信息
行为:用来描述事物能够做什么 成员方法:用来描述事物能够做什么
类:是一组成员变量和成员方法的集合,其实是一个抽线的概念
对象:是该类事物的具体表现,具体到某一个个体
举例:
事物:人
属性:五官,姓名,性别,年龄...
行为:吃饭,学习,说话,敲代码...
类:Person
成员变量:facialFeatures,name,gender,age
成员方法:eat(),study(),talk(),coding()
对象:是该类事物的具体表现,具体到某一个个体 学生,老师,医生,程序员...
成员变量与局部变量的区别: 1、在类中的位置不同 成员变量 类中方法外 局部变量 方法内或者方法声明上 2、在内存中的位置不同 成员变量 堆内存: 随着对象在堆内存中的创建而出现,所以成员变量是在堆内存中出现 局部变量 栈内存: 由于方法执行是在栈中执行,所以在方法中定义的局部变量 也就是存在与栈里。 3、生命周期不同 成员变量 随着对象的创建而存在,随着对象的消失而消失 局部变量 随着方法的调用而存在,随着方法的调用完毕而消失 4、初始化值不同 成员变量 有默认的初始化值 原因:由于成员变量随着对象的创建而存在,而对象的创建 是在堆内存中创建,而我们又知道堆内存中的变量创建的时候 系统会给予默认值,所以我们在代码中定义的时候可以不赋值。 局部变量 没有默认的初始化值,必须先定义,赋值,才能使用。 原因:由于局部变量随着方法的调用而存在,是在栈里面调用的。 而我们知道栈里面的变量系统不会给予默认值,所以我们在代码 中定义的时候必须要赋值。 问题: 1、成员变量的名称可以和局部变量的名称一样吗? 可以,调用的时候,访问的变量遵循就近原则。 2、方法与方法之间的局部变量可以互相访问吗? 不可以,因为作用域的范围不同。
构造方法: 构造方法的目的是为对象中的数据进行初始化。 格式: 1、方法名与类名相同 2、没有返回值类型,连void都没有 3、没有具体的返回值
注意: 1、如果我们没有给出构造方法,JVM就会自动的提供一个无参的构造方法给我们。 2、如果我们给出了构造方法,JVM就不会再提供默认的无参构造方法了。 入如果我们没有给出无参构造方法,却给出了其他的带参构造方法,JVM就不再会提供默认的无参构造方法 只要我们给出了构造方法,无论是有参还是无参,JVM就永远不会再提供无参的构造方法 3、构造在同一个类中也是可以发生重载的。(方法名一致,参数列表不一样,与返回值无关) 构造方法的作用: 1、可以在创建对象的时候给对象的成员变量进行赋值 给对象的成员变量进行赋值的两种方式: 1、使用类提供的公共的setXxx()方法给成员变量进行赋值 2、使用带参数的构造方法给私有的成员变量进行赋值, 注意形参的变量名和成员变量名一样的时候,需要配合this关键字一起使用