🦫
type
status
date
slug
summary
tags
category
icon
password
Property
对于一个java程序来说,如果没有“方法”,会存在什么问题?代码无法得到复用
怎么提高复用性?可以定义方法,然后需要使用该功能的时候,直接调用一下方法即可
方法的定义
修饰符列表不是必选项,是可选的,方法的修饰符可以包括:public,protected,private,abstract,static,final,synchronized,其中public,protected,private不能同时存在
如果没有返回值使用void关键字;如果存在返回值可以是基本类型和引用类型。
如果存在返回值,使用return语句。return语句后面不能再执行语句,因为不可能会执行到,编译器会发生错误。只要有“return”关键字的语句执行,当前方法必然结束。
如果返回值类型是void,那么在方法体当中不能有“
return 值;
”这样的语句。但是可以有“return;
”语句,这个语句“return;”的作用就是用来终止当前方法的。🦫
type
status
date
slug
summary
tags
category
icon
password
Property
java语言是怎么进行方法区分的呢?
java编译器会通过方法名进行区分。
但是在java语言中允许方法名相同的情况出现。如果方法名相同的情况下,编译器会通过方法的参数类型进行方法的区分。
什么时候需要考虑使用方法重载?
在同一个类当中,如果“功能1”和“功能2”它们的功能是相似的,那么可以考虑将它们的方法名一致,这样代码既美观,又便于后期的代码编写(容易记忆,方便使用)。
注意:方法重载overload不能随便使用,如果两个功能压根不相干,不相似,根本没关系,此时两个方法使用重载机制的话,会导致编码更麻烦。无法进行方法功能的区分。
什么时候代码会发生方法重载?
- 条件1:在同一个类当中
- 条件2:方法名相同
🐿️
type
status
date
slug
summary
tags
category
icon
password
Property
现实世界中定义了“人”这种抽象概念,而具体的人则是“小明”、“小红”、“小军”等一个个具体的人。所以“人”可以定义为一个类(class),而具体的人则是实例(instance):
- class是一种对象模版,它定义了如何创建实例,因此class本身就是一种数据类型
- instance是对象实例,instance是根据class创建的实例,可以创建多个instance,每个instance类型相同,但各自属性可能不相同
定义class
创建一个类,类命名为
Person
:一个
class
可以包含多个字段(field
),字段用来描述一个类的特征。Person
类定义了两个字段,一个是String
类型的字段,命名为name
,一个是int
类型的字段,命名为age
。通过
class
,把一组数据汇集到一个对象上,实现了数据封装。🐿️
type
status
date
slug
summary
tags
category
icon
password
Property
在抽象类中,抽象方法本质上是定义接口规范:即规定高层类的接口,从而保证所有子类都有相同的接口实现,这样,多态就能发挥出威力。
如果一个抽象类没有字段,所有方法全部都是抽象方法:
就可以把该抽象类改写为接口:
interface
在Java中,使用
interface
可以声明一个接口:所谓
interface
,就是比抽象类还要抽象的纯抽象接口,因为它连字段都不能有。因为接口定义的所有方法默认都是
public abstract
的,所以这两个修饰符不需要写出来(写不写效果都一样)当一个具体的
class
去实现一个interface
时,需要使用implements
关键字:🐿️
type
status
date
slug
summary
tags
category
icon
password
Property
静态字段
在一个
class
中定义的字段为实例字段。实例字段的特点是,每个实例都有独立的字段,各个实例的同名字段互不影响。还有一种字段,用
static
修饰的字段,称为静态字段(static field
)实例字段在每个实例中都有自己的一个独立“空间”;静态字段只有一个共享“空间”,所有实例都会共享该字段:
对于静态字段,无论修改哪个实例的静态字段,效果都是一样的:所有实例的静态字段都被修改了,原因是静态字段并不属于实例:
虽然实例可以访问静态字段,但是它们指向的其实都是
Person class
的静态字段。所以,所有实例共享一个静态字段。