Java 类与对象



包的三大作用

  1. 区分相同名字的类
  2. 当类很多时,可以很好的管理类
  3. 控制访问范围

包的本质分析

  • 包的本质实际上就是创建不同的文件夹/目录来保存类文件,

包的命名
命名规则:

  • 只能包含数字、字母、下划线、小圆点…但不能用数字开头,不能是关键字或保留字
  • 一般是小写字母+小圆点一般是 com.公司名.项自名业务模块名


方法使用细节

访问修饰符  返回数据类型  方法名(形参列表...) //方法体
	语句;
	return 返回值;
}
  1. 形参列表:表示成员方法输入
  2. 返回数据类型;表示成员方法输出,void表示没有返回值
  3. 方法主体:表示为了实现某一功能代码块
  4. return语句不是必须的。
  5. 访问修饰符(作用是控制方法使用的范围) 如果不写默认访问,

返回类型

  1. 一个方法最多有一个返回值
  2. 返回类型可以为任意类型,包含基本类型或引用类型(数组,对象)
  3. 如果方法要求有返回数据类型,则方法体中最后的执行语句必须为return值;而且要求返回值类型必须和return的值类型一致或兼容(可以返回该类或该类的子类,不能是父类)
  4. 如果方法是void,则方法体中可以没有return语句,或者只写return ;

方法名

  • 遵循驼峰命名法,最好见名知义,表达出该功能的意思即可,比如得到两个数的和getSum,开发中按照规范

参数列表

  1. 一个方法可以有0个参数,也可以有多个参数,中间用逗号隔开
  2. 参数类型可以为任意类型,包含基本类型或引用类型
  3. 调用带参数的方法时,一定对应着参数列表传入相同类型或兼容类型的参数!
  4. 方法定义时的参数称为形式参数,简称形参;方法调用时的参数称为实际参数,简称实参,实参和形参的类型要一致或兼容(可以是对应的类型以及对应类型的子类型,不能是父类)、个数、顺序必须一致!

方法体

  • 里面写完成功能的具体的语句,可以为输入、输出、变量、运算、分支、循环、方法调用,但里面不能再定义方法!即:方法不能嵌套定义。

方法传参机制

  • 基本数据类型,传递的是值(值拷贝),形参的任何改变不影响实参
  • 引用类型传递的是地址(传递也是值,但是值是地址),可以通过形参影响实参

方法重载

  1. 方法名∶必须相同
  2. 参数列表:必须不同(参数类型或个数或顺序,至少有一样不同,参数名无要求)
  3. 返回类型:无要求

重载只和参数列表有关系
参数列表相同,就算参数名不同,返回类型不同,系统也会报错


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

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

}

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

  1. 可变参数的实参可以为0个或任意多个。
  2. 可变参数的实参可以为数组。
  3. 可变参数的本质就是数组(可以遍历形参名,将传入的数据取出)
  4. 可变参数可以和普通类型的参数一起放在形参列表,但必须保证可变参数在最后
  5. 一个形参列表中只能出现一个可变参数


作用域

  1. 属性和局部变量可以重名,访问时遵循就近原则。
  2. 在同一个作用域中,比如在同一个成员方法中,两个局部变量,不能重名。
  3. 属性生命周期较长,伴随着对象的创建而创建,伴随着对象的销毁而销毁。局部变量,生命周期较短,伴随着它的代码块的执行而创建,伴随着代码块的结束而死亡。即在一次方法调用过程中。
  4. 作用域范围不同
    全局变量/属性:可以被本类使用,或其他类使用(通过对象调用)局部变量:只能在本类中对应的方法中使用
  5. 修饰符不同
    全局变量/属性可以加修饰符局部变量不可以加修饰符


构造方法

  1. 一个类可以定义多个不同的构造器,即构造器重载
  2. 构造器名和类名要相同
  3. 构造器没有返回值
  4. 构造器是完成对象的初始化,并不是创建对象
  5. 在创建对象时,系统自动的调用该类的构造方法
  6. 如果程序员没有定义构造方法,系统会自动给类生成一个默认无参构造方法(也叫默认构造方法),
  7. 一旦定义了自己的构造器,默认的构造器就覆盖了,就不能再使用默认的无参构造器,除非显式的定义一下

对象创建流程

class Person{//类Person
	int age=90;
	String name;
	Person(String n,int a){	//构造器
		name=n;//给属性赋值
		age=a;
	}
}
Person p = new Person("小倩",20);
  1. 加载类信息,只会加载一次
  2. 在堆中分配空间(地址)
  3. 完成对象初始化
    默认初始化age=0 name=null
    显式初始化age=90,name=null
    构造器的初始化 age =20, name=小倩]
  4. 在对象在堆中的地址,返回给p(p是对象名,也可以理解成是对象的引用)。


this

  1. this关键字可以用来访问本类的属性、方法、构造器
  2. this用于区分当前类的属性和局部变量
  3. 访问成员方法的语法:this.方法名(参数列表);
  4. 访问构造器语法:this(参数列表);
    注意只能在构造器中使用(即只能在构造器中访问另外一个构造器,必须放在第一条语句)
  5. this不能在类定义的外部使用,只能在类定义的方法中使用


this的本质
每创建一个对象,在该对象中都会有一个this指向本身
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述

包的命名

在这里插入图片描述

常用包

在这里插入图片描述
在这里插入图片描述

注意事项

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

创建对象与使用对象

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

也可以在不同类中使用
在这里插入图片描述
在这里插入图片描述

类与对象的关系

在这里插入图片描述

对象的内存布局

在这里插入图片描述
在这里插入图片描述
如果是使用带参构造,那么在默认初始化时,直接将参数赋给属性
在这里插入图片描述

属性

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
本类有效在这里插入图片描述
在这里插入图片描述

成员方法

方法执行流程

1.当程序执行到方法时,就会开辟一个独立的空间(栈空间)
2.当方法执行完毕,或者执行到return语句时,就会返回,
3.返回到调用方法的地方
4.返回后,继续执行方法后面的代码
5.当main方法(栈)执行完毕,整个程序退出
在这里插入图片描述
在这里插入图片描述

方法使用细节

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

方法传参机制

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

方法重载

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

根据传入的参数不同,所实现的功能也不同
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

其实也可以发现
System.out.println也是方法重载,根据给的参数不同,也会有不同的打印结果
在这里插入图片描述
整型与浮点型
在这里插入图片描述
在这里插入图片描述
编译器认为100是一个整型数据
在这里插入图片描述

在这里插入图片描述

可变参数

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

作用域

在这里插入图片描述
在这里插入图片描述

构造

构造方法细节

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

之前我们没写,都是用的是编译器提供的无参构造方法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

我们要在构造方法里主要完成的工作是初始化
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

这样一条语句完成了3个工作
1、在内存中开辟了一个空间,并将元素赋值为默认值
2、调用构造函数,完成初始化 (其实可以发现,new后面的语句就是构造方法的方法名)
3、将对象地址赋值给stu
在这里插入图片描述
对象创建过程
在这里插入图片描述

对象创建流程

在这里插入图片描述
在这里插入图片描述

构造方法重载

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
构造方法的一个小问题
这个我把无参的构造方法注释掉
在这里插入图片描述

会发现这个方法报错了
因为我们在类中添加了带参的构造方法后,系统默认自带的无参构造方法就会消失,那么自然无法使用无参构造函数。只有类中没有任何构造函数,系统才会添加一个无参的构造函数。
因此,当我们添加了带参的构造方法后,一定要记得把默认的无参的构造方法加上。
在这里插入图片描述
在这里插入图片描述

this关键字

this本质

在这里插入图片描述
在这里插入图片描述

this调用本类的属性和方法

1、当成员变量和局部变量重名时,在方法中使用this时,表示的是该方法所在类中的成员变量。(this是当前对象自己)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如果成员名和局部变量重名,由于局部变量优先级高,使用this访问实例变量
在这里插入图片描述
使用this调用方法也是可以的
在这里插入图片描述
在这里插入图片描述

this调用构造器

在这里插入图片描述
在这里插入图片描述

总结

在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值