天天看点

Day_5 面向对象&方法重载&thisDay 5 面向对象

Day 5 面向对象

面向对象思想

程序是为了模拟现实世界,解决现实问题而使用计算机语言编写指令集合。

一切客观存在的事物都是对象。万物皆对象

任何对象,一定具有自己的属性(特征)和方法(行为)。

类是对象的模板,对象是类的实例

类:定义了对象应具有的特征和行为,类是对象的模板。

对象:拥有多个特征和行为的实体,对象是类的实例。

类的定义

属性:通过变量0表示,又称实例变量。

语法:数据类型 属性名;

位置:类的内部,方法的外部。

方法:通过函数表示,又称实例方法。

语法:

public 返回值类型 方法名(形参){
  //方法的主体
}
           

实例变量

实例变量不赋值时有默认值

实例变量类型 默认值
整数
小数 0.0
字符 \u0000(空格)
布尔 false
其他 null

实例变量与局部变量的区别

局部变量 成员变量
定义位置 方法或方法内的结构当中
默认值 无默认值
使用范围 从定义行到包含其结构结束
命名冲突 不允许重名

实例方法

方法的声明:

代表对象能做什么。

组成:修饰符 返回值类型 方法名(形参列表)

方法的实现:

代表对象怎么做,即如何实现对应的功能。

组成:{ }

方法重载

方法重载概念

在一些情况下,对象的同一种行为可能存在多种实现过程。

重载:一个类中定义多个相同名称的方法。

要求: 方法名称相同。

​ 参数列表不同(类型、个数、顺序)。

​ 与访问修饰符、返回值类型无关。

调用带有重载的方法是,需要根据传入的实参去找到与之匹配的方法。

好处:屏蔽使用差异,灵活、方便。

构造方法

类中的特殊方法,主要用于创建对象。

特点: 名称与类名完全相同。

​ 没有返回值类型。

​ 创建对象时,触发构造方法的调用,不可通过句点手动调用。

注意:如果没有在类中显示定义构造方法,则编译器默认提供无参构造函数。

对象创建过程

new Student() 触发对象创建(即会调用构造方法)

1、内存中开辟对象空间

2、为各个属性赋予初始值

3、执行构造方法中的代码

4、将对象的地址赋值给变量

对象的内存分配

存储对象的变量中保存对象的地址,通过变量中的地址访问对象的属性和方法。

构造方法重载

构造方法也可以重载,遵循重载规则。

创建对象时,根据传入参数,匹配对应的构造方法。

默认构造方法

在类中,如果没有显示定义构造方法,则编译器默认提供无参构造方法。

如已手动添加有参构造方法,则无参构造方法不再默认提供,可根据需求自行添加。

综上,为了避免忘记写无参构造函数,故无参构造函数全部显示书写。

this关键字

类是模板,可服务于此类的所有对象;

this是类中的默认引用,代表当前实例;

当类服务于某个对象时,this则指向这个对象。

this的第一种用法:

调用实例属性、实例方法。如:this.name、this.sayHi();

this的第二种用法:

调用本类中的其他构造方法。如:this()、this(实参)

加注:

在调用实例变量时,如果实例变量不与其它任何变量重名时,this . 前缀隐式存在。但若有重名时,局部变量优先,this . 前缀不再隐式存在,需显示书写来来调用实例变量。