文章目录
1.什么是对象
- 程序是为了模拟现实世界,解决现实问题而使用计算机语言编写的指令集合。
(1)现实世界的组成
- 世界是由什么组成的?
有人说:“世界是由无数原子组成的”。
有人说:“世界是由无数事物组成的”。
有人说:“世界是由无数物体组成的”。
有人说:“世界是由一切有生命的和一切没有生命的组成的”。
有人说:“你、我、他、大家组成的”。 - 所有回答都很抽象,没有特别明确的答案。
- 在程序员的眼里,世界的组成最为明确:“世界是由无数个对象组成的”。
(2)什么是对象
- 面向对象思想(Object Oriented Programming):
一切客观存在的事物都是对象,万物皆对象。
任何对象,一定具有自己的特征和行为。
(3)现实中的对象
- 以下对象都有的属性和方法
(4)程序中的对象
- 如何使用程序模拟现实世界,解决现实问题?
- 首先,在程序当中,必须具有和现实中相同的对象,用以模拟现实世界。
- 然后,使用程序中的对象代表现实中的对象,并执行操作,进而解决现实问题。
- 现实中的对象多数来自于“模板”,程序中的对象也应该具有“模板”。
2.什么是类
(1)类的抽取
- 在一组相同或类似的对象中,抽取出共性的特征和行为,保留所关注的部分。
(2)类的定义
3.类的组成
(1)对象的创建
(2)类与对象的关系
- 类:定义了对象应具有的特征和行为,类是对象的模板。
- 对象:拥有多个特征和行为的实体,对象是类的实例。
(3)实例变量
- 思考:之前学习局部变量时,要求必须先赋值再使用,否则编译错误。对于实例变量而言,未赋值并不会编译错误,能否直接访问?
(4)实例变量与局部变量的区别
(5)实例方法
- 对象的实例方法包含两部分:方法的声明和方法的实现。
- 方法的声明:
- 代表对象能做什么。
- 组成:修饰符 返回值类型 方法名(形参列表)
- 方法的实现:
- 代表对象怎么做:即如何实现对应的功能。
- 组成:{ 逻辑代码 }
- 方法的声明:
4.方法重载
(1)方法重载概念
- 有些情况下,对象的同一种行为可能存在多种实现过程。
- 例如:人对象的“吃”行为,吃饭和吃药的过程就存在差异。
(2)方法重载
- 重载(Overload):一个类中定义多个相同名称的方法。
- 要求:
- 方法名称相同。
- 参数列表不同(类型、个数、顺序)。
- 与访问修饰符、返回值类型无关。
- 调用带有重载的方法时,需要根据传入的实参去找到与之匹配的方法。
- 好处:灵活、方便、屏蔽使用差异。
5.构造方法
(1)代码调错
- 思考:以下方法是不是重载?
public void m(int a){}
public void m(int b){} - 两个方法的方法名称和参数列表都相同,只有参数名称不一样,编译报错。
- 注意:只是参数名称不同,并不能构成方法的重载。
(2)构造方法
- 构造方法:类中的特殊方法,主要用于创建对象。
- 特点:
- 名称与类名完全相同。
- 没有返回值类型。
- 创建对象时,触发构造方法的调用,不可通过句点手动调用。
- 注意:如果没有在类中显式定义构造方法,则编译器默认提供无参构造方法。
(3)对象创建过程
(4)对象的内存分配
(5)构造方法重载
- 构造方法也可重载,遵循重载规则。
(6)默认构造方法
(7)构造方法为属性赋值
6.this关键词
(1)this关键字
- this第一种用法:调用实例属性、实例方法。如:this.name、this.sayHi()
- this第二种用法:调用本类中的其他构造方法。如:this()、this(实参)
总结
- 什么是对象:
- 一切客观存在的事物都是对象,万物皆对象。
- 什么是类:
- 定义了对象应具有的特征和行为,类是对象的模板。
- 什么是方法重载:
- 方法名相同、参数列表不同。
- 什么是构造方法:
- 类中用于创建对象的特殊方法,名称与类名相同,没有返回值,不可通过句点调用。
- 什么是this关键字:
- 代表当前实例,通过this.访问实例成员;通过this()/this(xxx)访问本类中的其他构造方法。