目录
Java中的静态方法和实例方法的区别,以及如何正确地使用它们
普通方法的定义
成员方法的定义
public class Tako {
private int width; //成员变量
private int height;
//成员方法
public double area(int width,int height){
return width*height;
}
}
方法的重载
·是声明两个以上的同名方法,实现对不同数据类型的相同处理
要求:
·重载的方法名称必须相同
·重载的方法,其形参个数或类型必须不同,否则将出现“已经定义了一个具有相同类型参数的方法成员”的编译错误
·重载方法可以使得程序更加清楚,以及更加具有可读性。执行同样功能但是具有不同参数类型的方法应该使用同样的名称
tips:被重载的方法必须具有不同的参数列表。不能基于不同的修饰符或返回值类型来重载方法
构造方法
·构造方法是特殊的方法
·方法名与类名同名
·不能有返回值,没有void(void的意思就是没有返回值,知道构造方法没有void就行)
·创建类的实例(对象)时自动调用
·用于类的实例(对象)初始化
tips:方法一般都是公有的,通常以访问修饰符public开头
无参构造方法
没有方法体
有参构造方法
其中形参列表写的是在类中定义了多少个成员变量,就都写上(全参)
public class Tako {
private int width; //成员变量
private int height;
//无参构造方法
public Tako(){
}
//有参构造方法
public Tako(int width,int height){
this.width=width;
this.height=height;
}
}
有参构造方法中一般跟this搭配(当方法的参数与成员变量相同时,使用this来引用成员变量名)
成员变量:用于储存数据
·设置为public,直接对其进行读写(不提倡)
·设置为private,可使用setter及getter进行读写
·可通过构造方法对成员变量进行初始化
默认构造方法
·若类中没有声明构造方法,编译器将创建默认无参构造方法
·若用户声明了构造方法,编译器将不再创建默认构造方法
·默认构造方法体为空,无参
getter与setter方法
getter方法
·返回对象内部的成员变量的值
格式:
getter中代码处理:用于读取成员变量值
·使用getter可以对读出的数据进行处理
public class Tako {
private double width; //成员变量
private double height;
//getter方法
public double getWidth(){
return width;
}
}
setter方法
·用来设置成员变量,可以在方法里面过滤掉一些不合理的值
格式:
setter中代码处理:用于写入成员变量值
·使用setter可以对输入的数据进行检验
public class Tako {//定义一个类,类名Tako
private int width;//成员变量
private int height;
//读width的值
public int getWidth(){
return width;
}
//对width进行赋值
public void setWidth(int width){
this.width=width;
}
//读height的值
public int getHeight(){
return height;
}
//对width进行赋值
public void setHeight(int height){
this.height=height;
}
}
为了使构造方法也能够对传入的数据进行校验,可以在构造方法中调用setter方法
异常的处理
·声明异常
·抛出异常
捕获异常
Java中的静态方法和实例方法的区别,以及如何正确地使用它们
定义和访问方式
- 静态方法:属于类本身,而不是类的实例。它们可以通过类名直接访问,不需要创建类的实例。
- 实例方法:属于类的实例,必须通过创建类的实例来访问。
访问成员
- 静态方法:只能访问静态成员(包括静态变量和静态方法)。
- 实例方法:可以访问静态和非静态成员。
内存分配
- 静态方法:在类加载时分配内存,与类关联,而非与类的实例关联。
- 实例方法:在创建类的实例时分配内存,与类的实例关联。
正确使用
- 静态方法:通常用于执行与类本身相关但不依赖于类实例的操作,如工具方法、计算方法等。
- 实例方法:通常用于执行与类的实例相关的操作,如访问实例变量、调用实例方法等。
下面是一个简单的例子,演示了如何正确使用静态方法和实例方法:
public class MyClass {
private static int staticVariable = 0; // 静态变量
private int instanceVariable = 0; // 实例变量
// 静态方法
public static void staticMethod() {
System.out.println("This is a static method.");
staticVariable++; // 可以访问和修改静态变量
}
// 实例方法
public void instanceMethod() {
System.out.println("This is an instance method.");
instanceVariable++; // 可以访问和修改实例变量
}
}
public class Main {
public static void main(String[] args) {
// 调用静态方法
MyClass.staticMethod(); // 输出 "This is a static method.",staticVariable 变为 1
System.out.println(MyClass.staticVariable); // 输出 1
// 创建 MyClass 的实例并调用实例方法
MyClass obj = new MyClass(); // 创建 MyClass 的实例
obj.instanceMethod(); // 输出 "This is an instance method.",instanceVariable 变为 1
System.out.println(obj.instanceVariable); // 输出 1
}
}