zoukankan      html  css  js  c++  java
  • 类和对象课后作业

      1.

    public class InitializeBlockDemo {

     /**   * @param args   */

          public static void main(String[] args) {      

              InitializeBlockClass obj=new InitializeBlockClass();  

               System.out.println(obj.field);      

               obj=new InitializeBlockClass(300);   

              System.out.println(obj.field);  

          }

    }

    class InitializeBlockClass{  

    //下面这句在初始化块之前与之后,会影响到field字段的初始值  //

            public int field=100;  

           {    

                field=200;

          }  

           public int field=100;

           public InitializeBlockClass(int value)

          {  

              this.field=value;

          }

         public InitializeBlockClass(){     

         }

    }

    初始化块主要用于对象的初始化操作,在创建对象时调用,可以用于完成初始化属性值、加载其他的类的功能。
    初始化块和构造方法功能类似,可以再创建对象的时候完成一些初始化的操作,一般的情况下,构造方法初始化和初始化块初始化可以通用。


    构造方法在初始化的时候可以通过参数船只,但是初始化块不能,初始化块的初始化在构造方法之前执行,如果搞糟方法多次重载,此时可以考虑构造方法中共通的代码放到初始化块中进行初始化。

    执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面”。

    2.初始化执行顺序

    class Root {

     static

    {

      System.out.println("Root的静态初始化块");

     }

     {

      System.out.println("Root的普通初始化块");

     }

     public Root()

     {

      System.out.println("Root的无参数的构造器");

     }

    }

    class Mid extends Root

    {

     static{

      System.out.println("Mid的静态初始化块");

     }

     {

      System.out.println("Mid的普通初始化块");

     }  

    public Mid()

     {

      System.out.println("Mid的无参数的构造器");

     }

     public Mid(String msg)

     {

      //通过this调用同一类中重载的构造器

      this();

      System.out.println("Mid的带参数构造器,其参数值:" + msg);

     }

    }

    class Leaf extends Mid

    {

     static{

      System.out.println("Leaf的静态初始化块");

     }  

    {

      System.out.println("Leaf的普通初始化块");

     } 

     public Leaf()

     {

      //通过super调用父类中有一个字符串参数的构造器

      super("Java初始化顺序演示");

      System.out.println("执行Leaf的构造器");  }

    }

    public class TestStaticInitializeBlock

    {

     public static void main(String[] args)

     {

      new Leaf();   

     }

    }

    结论:

    1. 父类static(顺序按照代码书写顺序进行)
    2. 子类static(顺序按照代码书写顺序进行)
    3. 父类非static域、构造器(顺序按照代码书写顺序进行)
    4. 子类非static域、构造器(顺序按照代码书写顺序进行)

    3.

    public class StaticTest {

         public static void main(String args [])

        {

           test b=new test();   b.print();  

       }

    }

    class test {  

       int i=1;   

      static void print()    

      {       

           test a=new test();  

           System.out.println(a.i);  

       }

    }

    在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)需要创建对象,再通过对象访问实例成员。

    4.使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数。请写一个类,在任何时候都可以向它查询你已经创建了多少个对象?

    public class Test3 {
        private static int i = 0;

        public Test3()
        {
            i++;
        }

        public static int getNumber()
        {
            return i;
        }

        public static void main(String[] args) {
            Test3 t1 = new Test3();
            Test3 t2 = new Test3();
            Test3 t3 = new Test3();
            Test3 t4 = new Test3();
            System.out.println("一共创建了" + Test3.getNumber() + "个对象");
        }
    }

    结果截图:

  • 相关阅读:
    Modified Mms.apkDiscontinued till I have free time
    文件管理器 Root Explorer v2.9.4 零售完全版
    QQREADEREFF8B4DFC3E8C03B
    CyanogenMod5 近乎完美的2.1ROM for G1 来了 感谢 cyanogen大神~~
    CyanogenMod5 Would you like a pony? (EXPERIMENTAL) [05/08 v5.0.7test3]
    商业周刊:摩托罗拉下注Android 不成功便成仁
    Cyanogen Updater 5.0 IS HERE!!!
    22个开源的PHP框架
    LotusPhp
    10 个免费超棒的编程用等宽字体
  • 原文地址:https://www.cnblogs.com/wanggang-java/p/4886152.html
Copyright © 2011-2022 走看看