ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

DAY6面向对象初

2021-09-22 21:32:22  阅读:121  来源: 互联网

标签:初始化 DAY6 局部变量 构造 面向对象 参数 可变 方法


方法重载(overload)

java中允许同一个类中,多个同名方法的存在,但要求形参列表不一致————比如:System.our.println (); out是 PrintStream类型

重载的好处

1,减轻了起名的麻烦

2,减轻了记名的麻烦

calculate计算

重载的注意事项和使用细节

1,方法名必须相同

2,参数列表必须不同(形参类型、个数或顺序,至少有一样不同 ,参数名无要求)

3,返回类型无要求

可变参数

Java允许将同一个类中多个同名同功能但参数个数不同的方法,封装成一个方法。就可以通过可变参数实现

基本语法

访问修饰符 返回类型 方法名(数据类型...形参名){}

variable parameters可变参数

 

//上面的三个方法名称相同,功能相同,参数个数不同,可以使用可变参数优化

 

可变参数的注意事项和使用细节

1,可变参数的实参可以为0个或任意多个

2,可变参数的实参可以为数组

3,可变参数的本质就是数组

4,可变参数可以和普通类型的参数一起放在形参列表,但必须保证,可变参数在最后

5,一个形参列表中只能出现一个可变参数

作用域

scope范围

1,在Java编程中,主要的变量就是属性(成员变量)和局部变量。

2,我们说的局部变量一般是指在成员方法中定义的变量

3,Java中作用域的分类:

全局变量:也就是属性,作用域为整个类体,例:Cat类:cry eat等方法使用属性

局部变量:也就是除了属性之外的其他变量,作用域为定义它的代码块中

4,全局变量可以不赋值,直接使用,因为有默认值,局部变量必须赋值后,才能使用,因为没有默认值。

作用域的注意事项和细节说明

1,属性和局部变量可以重名,访问时遵循就近原则。

2,在同一个作用域中,比如在同一个成员方法中,两个局部变量,不能重名

3,属性声明周期较长,伴随着对象的创建而创建,伴随着对象的死亡而死亡。局部变量生命周期较短,伴随着它的代码块执行而创建,伴随着代码块的结束而死亡,即在一次方法调用过程中。

4,作用域范围不同:

全局变量(属性):可以被本类使用,或其他类使用(通过对象调用)

局部变量:只能在本类中对应的方法中使用

5,修饰符不同

全局变量/属性可以加修饰符

局部变量不可以加修饰符

构造方法/构造器

构造方法又叫构造器(constructor),是类的一种特殊方法,它的主要作用是完成对新对象的初始化。它有几个特点:

基本语法:

【修饰符】 方法名 (形参列表){

方法体;

}

1,构造器的修饰符可以默认

2,构造器没有返回值

3,方法名 和 类名字必须一样

4,参数列表 和 成员方法一样的规则

5,构造器的调用系统完成(在创建对象时,系统会自动的调用该类的构造器完成对对象的初始化)

 

构造器的注意事项和使用方法

 

 

6,如果程序员没有定义构造器,系统会自动给类生成一个默认无参构造器(也叫默认构造器),比如Person(){},使用javap指令 反编译查看

7,一旦定义了自己的构造器,默认的构造器就覆盖了,就不能再使用默认的无参构造器,除非显式的定义一下,即:Person(){}

对象创建流程分析

 

先在方法区加载Person类,new的时候在堆里开辟空间,然后开始初始化,先进行默认初始化,然后再进行显式初始化(赋值),再执行构造器,把小倩放在常量区,把地址指向堆里空间,然后将20重新赋给age,最后是在栈里开空间指向堆的地址

1,加载Person类信息(Person.class),只会加载一次

2,在堆中分配空间(地址)

3,完成对象初始化【3.1默认初始化 3.2显式初始化,3.3 构造器初始化】

4,再把对象在堆中的地址,返回给p(p是对象名,也可以理解成是对象的引用)

this关键字

 

 

 

Java虚拟机会给每个对象分配this,代表当前对象

this.name,就是当前对象的属性

 

哪个对象调用,this就代表哪个对象

hashCode可以当作地址看,但不是真正的地址

 

this的注意事项和使用细节

1,this关键字可以用来访问本类的属性、方法、构造器

2,this用于区分当前类的属性和局部变量

3,访问成员方法的语法:this.方法名(参数列表);

4,访问构造器语法:this(参数列表);注意只能在构造器中使用(只能在构造器中访问另一个构造器)

5,this不能在类定义的外部使用,只能在类定义的方法中使用。

 

 

标签:初始化,DAY6,局部变量,构造,面向对象,参数,可变,方法
来源: https://blog.csdn.net/weixin_44872327/article/details/120423389

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有