面向对象(2):方法的重载,构造方法,以及this的用法

一、方法的签名:方法名+参数列表

       方法的签名包括方法名和参数列表两部分,举例如下:

在这里插入图片描述
(1).方法名:study,参数列表为()括号,里面什么也没有也可以
(2).方法名:sayHi,参数列表为()括号,里面什么也没有也可以

二、方法的重载(Overload):

(1)发生在同一类中,方法名称相同,参数列表不同,方法体不同
(2)编译器在编译时会根据方法的签名自动绑定方法
代码如下(示例):

void Student(){ 
}
void Student(int a){ 
}
void Student(double b){ 
}
void Student(boolean b){ 
}
void Student(char c){ 
}
void Student(String s){ 
}

以上方法都是方法名相同,参数列表不同,这就是方法的重载

三、构造方法:----------------代码复用

(1)给成员变量赋初值
(2)与类同名,没有返回值类型(连void没有)
(3)在创建(new)对象时被自动调用
(4)若自己不写构造方法,则编译器默认提供一个无参的构造方法,
若自己写了构造方法,则不再默认提供
(5)构造方法可以重载
.

构造方法的演示如下
代码如下(示例):
在这里插入图片描述

三、this的用法:

   this:指代当前对象,哪个对象调用方法它指的就是哪个对象
   只能用在方法中,方法中访问成员变量之前默认有个this.

(1)this.成员变量名-----------访问成员变量
(2)this.方法名()-------------调用方法(一般不用)
(3)this()--------------------调用构造方法(应用率低)

java规定:
1.成员变量和局部变量是可以同名的
----使用变量的时候,采用的是就近原则
----此时若想访问成员变量,则this不能省略

2.当成员变量与局部变量同名时,访问成员变量前的this不能省略
当成员变量与局部变量不同名时,this可以省略

代码如下(示例):
在这里插入图片描述

三、什么是NullPointerException

内存管理:由JVM来管理的
(1)堆:存储new出来的对象(包括成员变量)
(2)栈:存储局部变量
(3)null:表示空,没有指向任何对象
若引用的值为null,则该引用不能再进行任何点操作了
若点操作则发生NullPointerException空指针异常

这两句话是什么意思呢?我画个图给大家展示一下
Student zs = new Student();

如果创建了学生对象的话不给成员变量赋值的情况解析:

我们在new一个学生对象的时候,只要new了,new出来的对象就会储存在堆中,那么如果我们不给类中的成员变量赋值的时候,那么new出来的对象他的一些属性就会默认为默认值,通常情况下:
byte,short,int,long,char-----------默认为0
float,double--------------------------默认为0.0
boolean-------------------------------默认为false
引用类型------------------------------默认为null
引用类型变量是可以赋值为null的,当我们new了一个学生对象zs,只要new了,堆中就会存放这个学生对象,zs是局部变量是存放在栈中,zs后边有一个内存地址,这个地址与堆中的地址相对应,只要在访问的时候我们就可以听过栈中的内存地址找到堆中的对象
在这里插入图片描述
在这里插入图片描述
当new了一个学生对象zs的时候,给zs这个变量赋值为null的时候,那么这个时候zs在栈中就没有内存地址了,没有就表示空,就没有任何指向了,这个时候如果想将堆中的年龄25改为36,就会发生NullPointerException空指针异常,报错

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值