Chinaunix首页 | 论坛 | 博客
  • 博客访问: 728148
  • 博文数量: 134
  • 博客积分: 3207
  • 博客等级: 中校
  • 技术积分: 1995
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-01 20:47
文章分类

全部博文(134)

文章存档

2022年(1)

2020年(7)

2018年(2)

2016年(5)

2015年(14)

2014年(21)

2013年(3)

2012年(1)

2011年(15)

2010年(30)

2009年(35)

分类: Java

2015-11-20 13:51:37


点击(此处)折叠或打开

  1. package com.pp;

  2. public class StaticFinal
  3. {
  4.     static int a =9 ;//成员变量:static成员变量,也叫静态成员变量.可以通过类名使用这个成员变量
  5.     final int FFb = 0;
  6.     
  7.     public static void run()
  8.     {
  9.         System.out.println("staic is runing");
  10.     }
  11.     public final void FFrun()
  12.     {
  13.         System.out.println("Final FFrun is runing");
  14.     }
  15.     
  16.     public static void OKrun()
  17.     {
  18.         System.out.println("父类OK staic is runing");
  19.     }
  20.     
  21.     public static void main(String[] args)
  22.     {
  23.         // TODO Auto-generated method stub
  24.         /**
  25.          * static关键字:可以用在属性、方法、类上。
  26.          * static修饰成员变量:标示这个类不管生成了多少个对象,这多个对象共同使用这一个static所修饰的属性.
  27.          * 可以通过类名使用这个静态成员变量
  28.          * 静态成员变量具有单独的内存区域。java推荐使用类名直接访问静态成员变量
  29.          */
  30.         
  31. /*        
  32.         StaticFinal ss01 = new StaticFinal();
  33.         StaticFinal ss02 = new StaticFinal();
  34.         ss01.a = 10;
  35.         System.out.println(ss02.a);
  36.         StaticFinal.a = 89;
  37.         System.out.println(ss02.a);
  38.         System.out.println(ss01.a);
  39.         
  40.         /*
  41.          * static修饰的方法也叫静态方法,静态方法具有单独的内存区域。java推荐使用类名直接访问静态方法。
  42.          * 类名.方法(参数....);
  43.          * static方法可以被继承,但是不能被重写。静态方法具有单独的内存区域。
  44.          */
  45. //*/        
  46. /*        StaticFinal.run();
  47.         
  48.         CC cbb = new CC();
  49.         cbb.OKrun();
  50.         cbb.FFrun();
  51.         
  52.         HKID hkid = new HKID();
  53.         hkid.FFrun();
  54. */        
  55.         Pensol pp = new Boy();
  56.         Pensol ppOK = new Boy();
  57.         
  58.         //pp.adress = new Adress();//编译错误,因为改变了adress指向的对象的地址
  59.         pp.adress.name = "Shang Hai";//编译通过,因为adress所指向的地址没有变,只是对象里面name的内容改变了。
  60.         

  61.     }

  62. }

  63. class CC extends StaticFinal
  64. {
  65.     int a;
  66.     static int b = 0;
  67.     //static方法可以被继承,但是不能被重写。静态方法具有单独的内存区域。
  68.     public static void OKrun()
  69.     {
  70.         //a++; //一个类中,静态方法不能访问非静态的成员变量!!原因是静态方法可以使用类名调用,但是非静态成员变量不能通过类名访问。
  71.         b++;
  72.         System.out.println("子类CCOK staic is runing");//静态方法具有单独的内存区域,不在对象的内存中。
  73.     }
  74. }

  75. //当一个类被final修饰的时候,表示这个类是一个终态类,不能被继承。
  76. final class HKID extends StaticFinal
  77. {
  78.     //final修饰属性:当一个属性被final修饰的时候,表示这个属性是一个终态属性,不能被重新赋值。
  79.     final int b = 0; //标示 b是一个常量。 final属性必须赋初始值
  80.     
  81.     //final修饰方法:当一个方法被final修饰的时候,表示这个方法是一个终态方法,不能被重写。
  82.     public static void OKrun()
  83.     {
  84.         System.out.println("子类HKID staic is runing");//静态方法具有单独的内存区域,不在对象的内存中。
  85.     }
  86. }

  87. class Boy extends Pensol
  88. {
  89.     static
  90.     {
  91.         System.out.println("静态代码块-->标示这个Boy已经加载到java虚拟机了");
  92.     }
  93.     
  94.     public Boy()
  95.     {
  96.         System.out.println("Boy构造方法");
  97.     }
  98. }

  99. class Pensol
  100. {
  101.     //adress所指向的对象的地址不能改变。
  102.     final Adress adress = new Adress();
  103.     
  104.     /*
  105.      * 静态代码块:和方法一个级别,只能放在类里面。
  106.      * 静态代码块先于构造方法执行。
  107.      * 当class文件加载到java虚拟机上时,静态代码块已经执行了。
  108.      * 而构造方法时等class文件加载完毕后,实例化这个类的时候执行的。
  109.      * 不管生成多少个对象,static代码块只是执行一次,因为class文件加载到java虚拟机上,只需要加载一次就可以了。
  110.      */
  111.     static
  112.     {
  113.         System.out.println("静态代码块-->标示这个Pensol已经加载到java虚拟机了");
  114.     }
  115.     public Pensol()
  116.     {
  117.         System.out.println("Pensol构造方法");
  118.     }
  119. }

  120. class Adress
  121. {
  122.     /*
  123.      * 对于final类型的成员变量,有两种赋初值方式:
  124.      * 1.在声明final成员变量的时候就赋值。
  125.      * 2.在声明final成员变量的时候不赋值,但是类的所有构造方法给final成员变量赋值。
  126.      */
  127.     final int bbk = 10;
  128.     final int ads;
  129.     String name = "Bei jing";
  130.     
  131.     public Adress()
  132.     {
  133.         ads = 10;
  134.     }
  135.     
  136.     public Adress(int ads)
  137.     {
  138.         this.ads = ads;
  139.     }
  140. }

阅读(2429) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~