在java中 什么叫 实例方法

144
提问者 文化遗产新编
2020-07-28 20:42 悬赏 0财富值 阅读 962回答 4

我是大二学生,刚学java!谢谢java前辈的指点!... 我是大二学生,刚学java!谢谢java前辈的指点!

默认分类
登录 后发表回答
I一叶孤洲I
1楼 · 2020-07-28 20:52.采纳回答

比如,我们说一个教师类,它们有讲课的方法,有一个老师 小明,它是教师类的一个实例,小明也有讲课的方法,小明的方法就是实例方法,教师类的实例小明的方法讲课,就是实例方法

心之王者3
2楼-- · 2020-07-28 20:47

实例方法也叫2113做对象方法。
类方法是属于整个类的,而实例5261方4102法是属于类的1653某个对象的。
由于类方法是属于整个类的,并不属于类的哪个对象,所以类方法的方法体中不能有与类的对象有关的内容。即类方法体有如下限制:
(1) 类方法中不能引用对象变量;
(2) 类方法中不能调用类的对象方法;
(3) 在类方法中不能使用super、this关键字。
(4)类方法不能被覆盖。
如果违反这些限制,就会导致程序编译错误。
与类方法相比,对象方法几乎没有什么限制:
(1) 对象方法中可以引用对象变量,也可以引用类变量;
(2) 对象方法中可以调用类方法;
(3) 对象方法中可以使用super、this关键字。
在程序设计中,一些通用的、公用型的方法与类的对象无关,因此常常被作为类方法实现。如Java类库中Math类,其中多数的数学运算操作都被定义成静态方法。因此,可以使用类方法把一些通用的、公用型的方法放在合适的类中,从而很好地将它们组织起来。应用程序中的主方法main就是类方法。
例如:
class Clerk {

int c_ClerkNo;//职员号
String c_ClerkName;//职员姓名
double c_ClerkSalary;//工资
static int c_NextClerkNo=1000;//下一个职员号

static double c_LowSalary=280;//例4-11

public Clerk(String name,double salary) {
c_ClerkNo=++c_NextClerkNo;
// c_ClerkNo=c_NextClerkNo++;

c_ClerkName=new String(name);
// c_ClerkName=name;

c_ClerkSalary=salary;
}
}

public class InstanceClerk
{
public static void main(String[] args)
{
Clerk objclerk1=new Clerk("张三",892.5);
Clerk objclerk2=new Clerk("李四",1025.8);

String aName=new String("王五");
Clerk objclerk3=new Clerk(aName,2000);

System.out.println("姓名:"+objclerk1.c_ClerkName+"编号:"+objclerk1.c_ClerkNo+"工资:"+objclerk1.c_ClerkSalary);
System.out.println("姓名:"+objclerk2.c_ClerkName+"编号:"+objclerk2.c_ClerkNo+"工资:"+objclerk2.c_ClerkSalary);
System.out.println("姓名:"+objclerk3.c_ClerkName+"编号:"+objclerk3.c_ClerkNo+"工资:"+objclerk3.c_ClerkSalary);

System.out.println("最低工资:职员1="+objclerk1.c_LowSalary);
System.out.println("最低工资:职员2="+objclerk2.c_LowSalary);

Clerk.c_LowSalary=330;

System.out.println("提高以后");
System.out.println("最低工资:职员1="+objclerk1.c_LowSalary);
System.out.println("最低工资:职员2="+objclerk2.c_LowSalary);
}
}
你可以参考这个源程序,然后自己将注释的语句去掉注释等等,运行一下就会明白的。
希望对你有所帮助。

黑泽块印
3楼-- · 2020-07-28 21:00

Java中类的方法2113分为类方法(用static修饰,也叫静5261态方法)和实例方法(没有用4102static修饰1653,也叫非静态方法),我们来了解下两者的区别。
1.实例方法
当类的字节码文件加载到内存中时,类的实例方法并没有被分配入口地址,只有当该类的对象创建以后,实例方法才分配了入口地址。从而实例方法可以被类创建的所有对象调用,还有一点需要注意,当我们创建第一个类的对象时,实例方法的入口地址会完成分配,当后续在创建对象时,不会再分配新的入口地址,也可以说,该类的所有对象共享实例方法的入口地址,当该类的所有对象被销毁,入口地址才会消失。
2.类方法
当类的字节码文件加载到内存,类方法的入口地址就会分配完成,所以类方法不仅可以被该类的对象调用,也可以直接通过类名完成调用。类方法的入口地址只有程序退出时消失。

shihoumacili
4楼-- · 2020-07-28 21:13

实例方法:顾名思义就是一定需要通过实例才可以调用的方法
因此与之对立的就是类方法,不需要建立实例,就可以直接调用的方法(一般可以直接通过类名.的方式来直接调用)