how2j.cn


工具版本兼容问题
当一个属性被static修饰的时候,就叫做类属性,又叫做静态属性
当一个属性被声明成类属性,那么所有的对象,都共享一个值
与对象属性对比:
不同对象的 对象属性 的值都可能不一样。
比如盖伦的hp 和 提莫的hp 是不一样的。
但是所有对象的类属性的值,都是一样的


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



2分11秒
本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器



步骤 1 : 类属性   
步骤 2 : 访问类属性   
步骤 3 : 什么时候使用对象属性,什么时候使用类属性   
步骤 4 : 练习-类属性   
步骤 5 : 答案-类属性   

类属性: 又叫做静态属性
对象属性: 又叫实例属性,非静态属性
如果一个属性声明成类属性,那么所有的对象,都共享这么一个值
给英雄设置一个类属性叫做“版权" (copyright), 无论有多少个具体的英雄,所有的英雄的版权都属于 Riot Games公司。
package charactor; public class Hero { public String name; //实例属性,对象属性,非静态属性 protected float hp; static String copyright;//类属性,静态属性 public static void main(String[] args) { Hero garen = new Hero(); garen.name = "盖伦"; Hero.copyright = "版权由Riot Games公司所有"; System.out.println(garen.name); System.out.println(garen.copyright); Hero teemo = new Hero(); teemo.name = "提莫"; System.out.println(teemo.name); System.out.println(teemo.copyright); } }
访问类属性有两种方式
1. 对象.类属性

teemo.copyright

2. 类.类属性

Hero.copyright


这两种方式都可以访问类属性,访问即修改和获取,但是建议使用第二种 类.类属性 的方式进行,这样更符合语义上的理解
步骤 3 :

什么时候使用对象属性,什么时候使用类属性

edit
如果一个属性,每个英雄都不一样,比如name,这样的属性就应该设计为对象属性,因为它是跟着对象走的,每个对象的name都是不同的

如果一个属性,所有的英雄都共享,都是一样的,那么就应该设计为类属性。比如血量上限,所有的英雄的血量上限都是 9999,不会因为英雄不同,而取不同的值。 这样的属性,就适合设计为类属性
步骤 4 :

练习-类属性

edit  姿势不对,事倍功半! 点击查看做练习的正确姿势
通过garen.copyright修改其值

garen.copyright = "Blizzard Entertainment Enterprise";

然后打印teemo.copyright,观察是否有变化
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
查看本答案会花费2个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 基础总计0个答案 (总共需要0积分)
查看本答案会花费2个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 基础总计0个答案 (总共需要0积分)
账号未激活 账号未激活,功能受限。 请点击激活
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频

1分26秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器


会变化,因为类属性只有一个,不同的对象都共享这么一个类属性


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


问答区域    
2022-01-17 小白提交代码
HAHA来一起




}
package charactor;
import property.Weapon;


public class Hero {
  String name;
  float hp;
  float armor;
  int moveSpeed;
  static String  copyright;
  public void equip(Weapon w){
	  Hero garen = new Hero();
	  garen.copyright="Blizzard Entertainment Enterprise";
	  
  }
}

							


3 个答案

qing有志者
答案时间:2022-03-16
木木12
答案时间:2022-02-25
会发生改变,因为被static修饰的会被所有对象所共享

从入门到入坟
答案时间:2022-01-29
package HERO; public class Hero_one { public String name; static String banquan; public static void main(String[] args) { Hero_one cai = new Hero_one(); Hero_one lan = new Hero_one(); lan.name = "澜"; cai.name = "蔡文姬"; Hero_one.banquan = "王者荣耀"; System.out.println(cai.name); System.out.println(lan.name); System.out.println(Hero_one.banquan); cai.banquan = "亡者荣耀"; System.out.println(lan.banquan); } }



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2021-12-02 可以修改的
kevin刘




可以修改 static
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package javaapplication1.charactor;

/**
 *
 * @author l114801
 */
public class Hero {
    public String name; //实例属性,对象属性,非静态属性
    protected float hp;
    static String copyright;//类属性,静态属性
    
    public static void print(Hero h){
         System.out.println(h.name);    
         System.out.println(h.copyright);
    }
     
    public static void main(String[] args) {
           Hero garen =  new Hero();
           garen.name = "盖伦";
            
           Hero.copyright = "版权由Riot Games公司所有";
           print(garen);
           //System.out.println(garen.name);
           //System.out.println(garen.copyright);
           
           Hero teemo =  new Hero();
           teemo.name = "提莫";
           garen.copyright = "Blizzard Entertainment Enterprise";
           print(teemo);
          // System.out.println(teemo.name);    
           //System.out.println(teemo.copyright);
         
    }
}

							


2 个答案

芬达味橘猫
答案时间:2022-05-05
可以修改 static属性,Hero类,garen,teemo共享属性都会更改

从入门到入坟
答案时间:2022-01-29
package HERO; public class Hero_one { public String name; static String banquan; public static void main(String[] args) { Hero_one cai = new Hero_one(); Hero_one lan = new Hero_one(); lan.name = "澜"; cai.name = "蔡文姬"; Hero_one.banquan = "王者荣耀"; System.out.println(cai.name); System.out.println(lan.name); System.out.println(Hero_one.banquan); cai.banquan = "亡者荣耀"; System.out.println(lan.banquan); } }



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2021-07-08 2021-7-8-PM-5-00
2021-06-09 类.类属性优先级高一点?
2021-01-26 The static field Hero.copyright should be accessed in a static way


提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 27 条以前的提问,请 点击查看

提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 JAVA 基础-类和对象-类属性 的提问

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

上传截图