how2j.cn


工具版本兼容问题
类方法: 又叫做静态方法

对象方法: 又叫实例方法,非静态方法

访问一个对象方法,必须建立在有一个对象的前提的基础上
访问类方法,不需要对象的存在,直接就访问

本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频



6分38秒
本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)



步骤 1 : 类方法   
步骤 2 : 调用类方法   
步骤 3 : 什么时候设计对象方法,什么时候设计类方法   
步骤 4 : 练习-类方法   
步骤 5 : 答案-类方法   

步骤 1 :

类方法

类方法: 又叫做静态方法

对象方法: 又叫实例方法,非静态方法

访问一个对象方法,必须建立在有一个对象的前提的基础上
访问类方法,不需要对象的存在,直接就访问
package charactor; public class Hero { public String name; protected float hp; //实例方法,对象方法,非静态方法 //必须有对象才能够调用 public void die(){ hp = 0; } //类方法,静态方法 //通过类就可以直接调用 public static void battleWin(){ System.out.println("battle win"); } public static void main(String[] args) { Hero garen = new Hero(); garen.name = "盖伦"; //必须有一个对象才能调用 garen.die(); Hero teemo = new Hero(); teemo.name = "提莫"; //无需对象,直接通过类调用 Hero.battleWin(); } }
步骤 2 :

调用类方法

访问类属性一样,调用类方法也有两种方式
1. 对象.类方法

garen.battleWin();;

2. 类.类方法

Hero.battleWin();;


这两种方式都可以调用类方法,但是建议使用第二种 类.类方法 的方式进行,这样更符合语义上的理解。
并且在很多时候,并没有实例,比如在前面练习的时候用到的随机数的获取办法

Math.random()

random()就是一个类方法,直接通过类Math进行调用,并没有一个Math的实例存在。
步骤 3 :

什么时候设计对象方法,什么时候设计类方法

如果在某一个方法里,调用了对象属性,比如

public String getName(){
return name;
}

name属性是对象属性,只有存在一个具体对象的时候,name才有意义。 如果方法里访问了对象属性,那么这个方法,就必须设计为对象方法

如果一个方法,没有调用任何对象属性,那么就可以考虑设计为类方法,比如

public static void printGameDuration(){
System.out.println("已经玩了10分50秒");
}

printGameDuration 打印当前玩了多长时间了,不和某一个具体的英雄关联起来,所有的英雄都是一样的。 这样的方法,更带有功能性色彩
就像取随机数一样,random()是一个功能用途的方法

Math.random()
步骤 4 :

练习-类方法

Or  姿势不对,事倍功半! 点击查看做练习的正确姿势
在一个类方法中,直接调用一个对象方法,
比如在battleWin中调用die()
能否直接调用? 为什么?
步骤 5 :

答案-类方法

在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频

3分24秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)


不能调用,因为调用battleWin()的时候,很可能没有任何具体对象,然而die()是一个对象方法,必须建立在有对象的前提下。

如果能调用,就矛盾了。 所以编译器会不让通过


HOW2J公众号,关注后实时获知布最新的教程和优惠活动,谢谢。


问答区域    
2018-08-15 我的理解
郭Bj
相当于main()是静态方法,再里面不能加载非静态方法,你试下用eclipse在里面随便创建一个对象方法,是会报错的,因为对象都没有创建。








答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2018-07-21 交作业
神乐
访问对象方法,必须建立在有一个对象的基础上。 因此直接在静态方法中调用对象方法die()是不行的。








答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2018-07-20 【学习总结】
2018-07-18 是不是一个方法里不存在任何对象属性,那么这个方法就可以叫做类方法???
2018-07-18 类方法里不是不可以调用对象方法吗???
2018-07-06 作业
2018-06-01 交作业呀交作业
2018-05-08 作业
2018-04-20 关于作业的疑问
2018-04-07 习题问题
2018-01-27 关于类方法中调用对象方法的疑惑
2017-12-03 相当于是静态成员变量或者方法 可以直接类名.方法或者成员变量,非静态方法里面如果需要使用可以直接类名.静态方法
2017-10-10 作业
2017-02-24 在main方法里实例化对象和在类方法里实例化对象哪种方式更好?
2017-02-21 类方法能传递参数给对象方法使用吗?
2017-02-13 关于练习题我的理解?
2016-11-26 为什么我花了钱买了j2se基础视频,刚刚看到这里就提示我积分没有了,这钱是百花了?




提问之前请登陆
关于 JAVA 基础-类和对象-类方法 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 620943819
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: http://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图