本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频
6分38秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器 步骤 1 : 类方法 步骤 2 : 调用类方法 步骤 3 : 什么时候设计对象方法,什么时候设计类方法 步骤 4 : 练习-类方法 步骤 5 : 答案-类方法
类方法: 又叫做静态方法
对象方法: 又叫实例方法,非静态方法 访问一个对象方法,必须建立在有一个对象的前提的基础上 访问类方法,不需要对象的存在,直接就访问 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();
}
}
如果在某一个方法里,调用了对象属性,比如
public String getName(){ return name; } name属性是对象属性,只有存在一个具体对象的时候,name才有意义。 如果方法里访问了对象属性,那么这个方法,就必须设计为对象方法 如果一个方法,没有调用任何对象属性,那么就可以考虑设计为类方法,比如 public static void printGameDuration(){ System.out.println("已经玩了10分50秒"); } printGameDuration 打印当前玩了多长时间了,不和某一个具体的英雄关联起来,所有的英雄都是一样的。 这样的方法,更带有功能性色彩 就像取随机数一样,random()是一个功能用途的方法 Math.random()
在一个类方法中,直接调用一个对象方法,
比如在battleWin中调用die() 能否直接调用? 为什么?
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频
3分24秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器
不能调用,因为调用battleWin()的时候,很可能没有任何具体对象,然而die()是一个对象方法,必须建立在有对象的前提下。
如果能调用,就矛盾了。 所以编译器会不让通过
HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。
问答区域
2024-02-08
可以
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2023-08-03
0.0
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2021-05-31
/为什么/this.method1(); 会报错 //为什么method1(); 会报错 // 能解释一下this 吗?
2021-03-20
为什么我通过传参的方式调用了呢?
2020-10-29
不能
提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 26 条以前的提问,请 点击查看
提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
|