①什么是面向对象?
面向对象并不是一个技术,而是一种指导思想。
以什么形式去组织代码和以什么形式去解决问题
生活中解决问题,就是通过一个个的对象在一起打交道,从而解决了问题。代码如果也能按照生活中的这套思想,程序就会变得很简单。
eg:
想要解决键盘录入 ----Scanner对象
面向对象主要学习什么?
自己如何设计对象
学习已有的对象如何进行使用
类:
定义: 类是一组相关属性和行为的集合,可以将其理解为对象的设计图
类是对象的设计图,因此,在创建对象之前,就需要先有类的存在
问题: 类和对象的关系?
依赖关系: 需要根据类去创建对象
数量; 一对多的关系,根据一个类,可以创建出多个对象
类的组成:
①属性(名词的描述----eg: 姓名,年龄, 品牌, 价格...)
成员变量: 成员变量的定义格式跟之前一样, 只不过位置发生了改变
类中,方法外
②行为(动词的描述---eg; 吃饭, 学习, 打电话)
成员方法: 成员方法和之前定义的方法一样,只不过去掉了static
对象的创建和使用:
先创建类才能创建对象
创建对象格式
类名 对象名= new 类名();
调用成员变量
对象名.变量名
如果当我们创建对象之后,没有给成员变量赋值,直接打印——默认初始化值
01.成员变量和局部变量的区别
区别 | 成员变量 | 局部变量 |
---|---|---|
类中位置不同 | 类中方法外 | 方法内 |
初始化值不同 | 有初始化值 | 没有,必须赋值才能用 |
内存位置不同 | 堆 | 栈 |
生命周期不同 | 随对象的创建存在,随对象消失而消失 | 随方法的调用存在,方法运行结束而消失 |
作用域 | 在类的大括号中 | 在方法的大括号中 |
02.this关键字
介绍: 当前类对象的引用(地址)
哪一个对象调用的方法, 方法中的this, 就代表的是哪一个对象
eg:
stu1.method() ----> this ---> stu1
stu2.method() -----> this ---> stu2
情况 : 如果局部变量和成员变量重名, Java会根据就近原则, 优先使用局部变量
-
如果非要使用成员变量的话, 可以使用this.进行区分
03.构造方法
定义:在创建对象时,一定会执行的方法。(系统默认存在)
构造方法的格式
-
方法名与类名相同, 大小写也必须一致
-
没有返回值类型, 连void 都没有
-
没有具体的返回值 (不能通过return语句带回结果数据)
注意:
-
在创建对象的时候, 被系统自动调用执行
-
每创建一次对象, 就会执行一次构造方法
-
且不能手动调用 --- stu.Student() ; 错误 !!!
作用:
-
本质作用 : 创建对象
-
结合执行时机 : 在创建对象的时候, 直接给成员变量赋值
注意:
-
如果一个类中, 没有编写任何构造方法, 系统将会提供一个 [默认的] [无参数的] 构造方法
-
如果手动编写过构造方法, 系统将不会再提供那个默认的无参构造构造
-
建议 : 无参 \ 带参构造全部手动给出