今天来梳理一下java中的方法
方法定义
方法重载
构造函数
方法定义
定义:可以简单的理解为:一个模型的功能,一个对象的行为,一个function(函数)
方法分类“
1. 返回值为空void的方法
public void m1() {
方法体
}
2. 带具体返回类型的方法
//返回基本类型
int getAge() {
return 18;
}
boolean isPerson() {
return false;
}
还有其他基本数据类型等
4 带参数的方法
基本数据类型
public static void main(String[] args) {
int age=10;
m4(age);
System.out.println(age);
}
//研究传入的基本类型变量的特性
static void m4(int age) {//对于基本类型来说,传入的变量会被copy-复制 一份
age+=10;
System.out.println(age);
}
//传任意基本类型的参数变量 和 任意的传入顺序
void m3(boolean isPerson,int age,float account) {
}
//传任意基本类型的参数变量
void m2(int age,boolean isPerson,float account) {
}
//传基本数据类型
void m1(int age){
}
类类型
当类类型作为方法参数时,它要的其实是一个具体的对象,所以要先创建一个对象,然后就这个对象传入这个方法里
public static void main(String[] args) {
Equipments jb=new Equipments();//先创建一个具体的对象
new EquipMent(jb);//将这个具体的对象传入这个方法里
}
class EquipMent{
public EquipMent(Equipments equipments) {
System.out.println("我是自装备");
}
}
class Equipments{
}
方法重载
定义:函数名相同,只要参数个数不同,参数顺序不同,则为不同的函数
void drink(Milk milk) {
System.out.println("牛奶");
}
void drink(int i) {//1
System.out.println("咪一口");
}
//先ao一下,在咪一口,在吸一口牛奶,最后滋溜一下
void drink(Ao ao,int i,Milk milk,Object obj) {
System.out.println("吸一口酒");
}
//先ao一下,在咪一口,在吸一口牛奶,最后滋溜一下
void drink() {
drink(null);//
drink(1);
drink(null,1,null,null);
}
//可变参数
void drink(int... i) {//与(int[] i)相似
System.out.println("1");
}
void drink(int[] as,int a) {
System.out.println("2");
}
void drink(int a,int b,int c) {
}
可变参数实际上就是可以自定义传入函数参数的个数,会自动封装一个数组来接受例如:
drink(1,1,1,1);==new int[]{1,1,1,1}
注意,可变参数不仅仅可以使用到基本数据类型,还可以用于对象类型
构造函数
定义:
方法名和类名一样(包括大小写)
没有返回类型
实例化一个对象的时候,必然调用构造方法
隐式的构造方法
Hero类的构造方法是
public Hero(){
}
这个无参的构造方法,如果不写,就会默认提供一个
如果提供了一个有参的构造方法
一旦提供了一个有参的构造方法
同时又没有显式的提供一个无参的构造方法
那么默认的无参的构造方法,就“木有了“
public Hero(){
}
public Hero(int a){ //那么,上一个构造函数就失去了它的作用
}
构造函数与普通函数的区别:
(1). 一般函数是用于定义对象应该具备的功能。而构造函数定义的是,对象在调用功能之前,在建立时,应该具备的一些内容。也就是对象的初始化内容。
(2). 构造函数是在对象建立时由 jvm 调用, 给对象初始化。一般函数是对象建立后,当对象调用该功能时才会执行。
(3). 普通函数可以使用对象多次调用,构造函数就在创建对象时调用。
(4). 构造函数的函数名要与类名一样,而普通的函数只要符合标识符的命名规则即可。
(5). 构造函数没有返回值类型。
构造函数的方法重载
public static void main(String[] args) {
new EquipMent(1);
new EquipMent(1.1);
new EquipMent("dg");
Equipments jb=new Equipments();
new EquipMent(jb);
//m1();
}
}
//构造方法重载
class EquipMent{
//装备等级
public EquipMent(int grade) {
System.out.println("我是装备等级");
}
//装备的价格
public EquipMent(double price) {
System.out.println("我是装备的价格");
}
//装备的功能
public EquipMent(String function) {
System.out.println("我是装备的功能");
}
//子装备
public EquipMent(Equipments equipments) {
System.out.println("我是自装备");
//equipments.m2();
//equipments.quipments();
}
public EquipMent(EquipMent equipMent) {
// TODO Auto-generated constructor stub
}
}
//子装备类
class Equipments{
}
以上运行的结果为:
我是装备等级
我是装备的价格
我是装备的功能
我是自装备