java 静态方法和实例方法的区别
1个回答
展开全部
1、有无隐式参数this。对于每一个实例方法,都有一个隐士参数this,也就是对当前对象操作。比如String类对象s, s.length() 就可获得字符串s的长度,实际上内部是这样调用的:length(s)。类中的 静态方法是没有隐式参数的。
2、静态方法可以理解为一个类的通用工具,比如char的包装类Character,里面就有很多操作字符的方法 :
Character.isdigit(char c)
Character.isupper(char c)
......
在比如Math类,里面的静态方法可以用来进行数学计算。你可发现,静态方法有点像面向过程中的方法,它不再和某个对象绑定在一起了(严格说是和类绑定的,也就是说,静态方法是属于某个类的),所以我们说它们很像“通用工具”。而实例方法的侧重点在:构成实例的业务逻辑操作,或者说,模拟对象的操作。比如你设计一个Student类,那么,study()方法就不要写为静态方法,因为study方法是每个学生都固有的行为,它是构成实例的接口。
3、静态方法不知道实例的任何信息,不能在静态方法中使用实例字段,因为在定义静态方法时,还没有任何实例被new出来。
4、静态方法通过类来调用,实例方法通过实例来调用(虽然java支持实例调用静态方法,但是最好不要这样做。)
5、如果我说的你不理解,那就多写代码,这有助于你感受他们的差别。有一天你会恍然大悟的
2、静态方法可以理解为一个类的通用工具,比如char的包装类Character,里面就有很多操作字符的方法 :
Character.isdigit(char c)
Character.isupper(char c)
......
在比如Math类,里面的静态方法可以用来进行数学计算。你可发现,静态方法有点像面向过程中的方法,它不再和某个对象绑定在一起了(严格说是和类绑定的,也就是说,静态方法是属于某个类的),所以我们说它们很像“通用工具”。而实例方法的侧重点在:构成实例的业务逻辑操作,或者说,模拟对象的操作。比如你设计一个Student类,那么,study()方法就不要写为静态方法,因为study方法是每个学生都固有的行为,它是构成实例的接口。
3、静态方法不知道实例的任何信息,不能在静态方法中使用实例字段,因为在定义静态方法时,还没有任何实例被new出来。
4、静态方法通过类来调用,实例方法通过实例来调用(虽然java支持实例调用静态方法,但是最好不要这样做。)
5、如果我说的你不理解,那就多写代码,这有助于你感受他们的差别。有一天你会恍然大悟的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询