how2j.cn


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

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



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



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

步骤 1 :

类属性

类属性: 又叫做静态属性
对象属性: 又叫实例属性,非静态属性
如果一个属性声明成类属性,那么所有的对象,都共享这么一个值
给英雄设置一个类属性叫做“版权" (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); } }
步骤 2 :

访问类属性

访问类属性有两种方式
1. 对象.类属性

teemo.copyright

2. 类.类属性

Hero.copyright


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

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

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

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

练习-类属性

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

garen.copyright = "Blizzard Entertainment Enterprise";

然后打印teemo.copyright,观察是否有变化
步骤 5 :

答案-类属性

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

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


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


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


问答区域    
2018-12-07 类属性
小孤心



输出: 盖伦 Blizzard Entertainment Enterprise 提莫 Blizzard Entertainment Enterprise
 public class Hero {
    
    String name; //姓名
      
    float hp; //血量
    
    static String copyright;
    
    public static void main(String[] args) {
        Hero garen =  new Hero();
        garen.name = "盖伦";
         
        //Hero.copyright = "版权由Riot Games公司所有";
        garen.copyright = "Blizzard Entertainment Enterprise";
         
        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);
      
 }
}

							






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





2018-11-25 交作业
wwsw1111



交作业
package New;
public class Hero2 {  //类和对象.类属性
    public String name ;
    protected float hp;
    static String copyright;
    public static void main (String[] args) {
    	Hero2.copyright="版权由Riot Games公司所有";
    	System.out.println(Hero2.copyright);
    	
    	Hero2 garen=new Hero2();
    	garen.name="盖伦";
    	garen.copyright = "Blizzard Entertainment Enterprise";
    	System.out.println(garen.name);
    	System.out.println(garen.copyright);
    	
    	Hero2 teemo =new Hero2();
    	teemo.name="提莫";
    	System.out.println(teemo.name);
    	System.out.println(teemo.copyright);
    	
    }
}

							


1 个答案

wwsw1111 答案时间:2018-11-25
版权由Riot Games公司所有
盖伦
Blizzard Entertainment Enterprise
提莫
Blizzard Entertainment Enterprise




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





2018-09-13 有点像默认属性
2018-08-28 按在地上摩擦~
2018-08-07 小白交作业
2018-07-20 【学习总结】
2018-07-06 作业
2018-07-03 类属性可以直接访问吗?不需要前面的Hero.和garen.
2018-05-08 会修改
2017-06-30 也会变成Blizzard Entertainment Enterprise
2017-03-15 为什么静态变量在方法外不能重新赋值,只能在方法里赋值
2016-12-29 类属性能被继承吗
2016-03-26 static variable




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

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

上传截图