今天的博客主题
Java编程基础 ——》Java方法
许多程序设计语言用函数这个术语来描述命名字程序,而在Java里却用方法这个术语来表示。
方法就是做某些事情的方式
什么是Java方法
方法可以看做是一个语句的集合,汇总一起来执行一个功能。
方法是解决一类问题步骤的有序组合。
方法应该被包含在类中。
Java方法的优点
1)利于程序的维护
2)提高代码的重用性
3)提高开发效率
4)使程序变得简短清晰
Java方法的声明使用
方法分为:实例方法和静态方法
方法的基本组成部分包括:名称、参数、返回值、方法体。
实例方法
一个完整的方法如下
// 多个参数逗号隔开:参数类型 参数名1, 参数类型 参数名2
访问修饰符 返回值类型 方法名(参数类型 参数名){
方法体
}
访问修饰符:告诉编译器如何调用该方法。定义了该方法的访问类型。
返回值类型 :可能会有返回值,也有可能没有返回值。方法有返回值,返回值类型可以是基本类型,也可以是引用类型,在方法体后面需要return关键字来返回一个类型与返回值类型一样的值。没有返回值时候,返回值类型就是void关键字,那也就不需要return关键字了。
方法名:方法的实际名称。方法名和参数列表表共同构成方法签名,唯一的标识出某个方法。
参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
方法体:方法体包含具体的语句,定义该方法的功能。
// 定义一个类。方法一定要在类中
public class TestA{
// 有返回值的方法
public boolean getAa(int i){
boolean b = 1 + i > 2;
return b;
}
// 没有返回值的方法
public void getBb(int i){
i += 1;
System.out.println(i);
}
}
方法命名规则:
1)方法名首字母小写
2)遵循驼峰命名法
3)避免使用连接符。
方法的使用
1)当前类中直接使用
2)不同类中,需要先实例化类,通过类的实例对象去调用
// 同类中方法直接使用
// 不同类中
// 定义一个类
public class TestB{
// 实例化类
TestA t = new TestA();
// 直接调用方法,方法有返回值,用方法返回值类型来接收这个返回值
boolean b = t.getAa(1);
System.out.println(b);
// 没有返回值的方法,就直接这样用
t.getBb(2);
}
注意:方法只能通过对象才能被调用,且这个对象必须能执行这个方法调用。
如果试图在对象上调用它不具备的方法,在编译时就会得到一个错误信息。
静态方法
与实例方法一样,只是在声明的时候需要static关键字
// 定义一个类。不管是静态方法还是实例方法都在类中
public class TestA{
// 声明一个没有返回值的静态方法
public static void getAa(){
int a = 1 + 1;
System.out.println(i);
}
}
静态方法的使用
1)同类中直接使用
2)不同类中直接使用类名点静态方法名就行了
// 直接通过类名点方法名调用
TestA.getAa()
注意:
1)静态方法只能访问类的静态变量,不能访问类的非静态变量。
2)非静态方法可以访问类的静态变量,也可以访问类的非静态变量。
3)非静态方法可以调用静态方法,静态方法不可调用非静态方法。
4)
构造方法
构造方法主要用来创建类的实例化对象,完成创建实例化对象的初始化工作。
构造方法的作用是初始化数据。
特点是:构造方法名称和类名一致,并且没有返回值类型和返回值。
构造方法包含:方法名,参数列表,方法体
访问修饰符 方法名(参数列表){
方法体
}
构造方法的特点:
1)构造方法名称必须与类名一致。
2)构造方法没有返回值,关键字void不能加入。
3)任何类都有一个默认的构造方法,不含任何参数。
注意:
1)如果显示了定义的构造方法,系统就不会创建默认的不含参数的构造方法
2)重载一个有参数的构造方法,一定要先写一个无参数的构造方法,否则程序会崩溃。
所有方法的参数列表个数不限制,多个用逗号隔开。
方法调用传递参数时,不写数据类型,只写所对应数据类型的数据。
方法调用传递的参数列表顺序不能乱,个数不能少。
重写与重载
这两个关键字都是对方法来使用的,用来重写一个方法或者重载一个方法。
重写(Override):与返回值类型无关,只看参数列表。
重载(Overload):同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
两者不同主要体现在:目的不同、范围不同、参数不同、多态性不同、返回类型不同。
1)目的不同
重载用于增加程序的可读性(做法不同,但是做的同一事情)。
重写用于提供其超级类已经提供的方法的特定实现。
2)范围不同
重载在相同的类范围内内执行。
重写发生在两类具有继承的关系。
3)参数不同
重载参数必须不同。
重写参数必须相同。
4)多态性不同
重载静态多态,调用的函数在编译时被选中。
重写运行多态,在运行中展示多态性。
5)返回类型不同
重载中可以相同或不同,但必须改变参数。
重写必须是相同的或协变的。