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

     java 的初始化规律

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

    执行类的构造函数。

    类的初始化块不接收任何的参数,而且只要一创建类的对象,它们就会被执行。因此,适合于封装那些“对象创建时必须执行的代码”

    当多个类之间有继承关系时,创建子类对象会导致父类初始化块的执行。

    请自行编写示例代码验证以上结论。

    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请运行TestStaticInitializeBlock.java示例,观察输出结果,总结出“静态初始化块的执行顺序”。

    静态初始化块只执行一次。

    创建子类型的对象时,也会导致父类型的静态初始化块的执行。

    静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)?

    请编写代码验证你的想法。(发表到博客)

    public class Ex

    { int i =123; static int Temp;

    public static void A()

    { System.out.println(Temp);

    } public int B()

    { int x = 100;

    return x; }

    public static void main(String args[]) {

    Ex e = new Ex();

    Temp = e.B();

    e.A();

    }

    }

    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);  

       }

    }

     4

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

    public class Student{

    public static void main(String[] args){

    Information a = new Information();

    a.OutputInformation();

    Information b = new Information();

    b.OutputInformation();

    } }

    class Information{

    static int num=0;

    Information()

    { num++;

    }

    public void OutputInformation()

     {

    System.out.println("你已经创建了"+num+"个对象!");

    }

    }

  • 相关阅读:
    理解inode
    贝叶斯公式与拼写检查器
    《C程序设计语言》第四章 函数和程序结构
    MIT《计算机科学与编程导论》课堂笔记
    很牛的牛顿迭代法
    开发一个小工具重温C#经典问题
    斯坦福《编程方法学》环境搭建及常见问题
    看Sybase官方手册学索引工作原理
    学习编程的方法、软件和工具
    大师里奇留给了我们什么
  • 原文地址:https://www.cnblogs.com/lipengpengpeng/p/4886452.html
Copyright © 2011-2022 走看看