• 类与对象课后作业


    1.查询“你已经创建了多少个对象?

    源代码:

     1 public class How {
     2      public static void main(String[] args) {
     3          a1 b1 = new a1();
     4          a1 b2 = new a1();
     5          a1 b3 = new a1();
     6         //我已经创建了3个对象,接下来调用a1类的静态变量查询创建了多少对象
     7          System.out.println("我已经创建的对象个数为: "+a1.value);
     8      }
     9 }
    10 class a1 { 
    11    public static int value=0; 
    12     a1() { 
    13        //构造函数,每创建一个实例value就增加1 
    14        value=value+1; 
    15      }
    16 }

    结果截图:

    2、以下代码为何无法通过编译?哪儿出错了?

    解释:

    因为Foo没有定义。如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法。

     

    2、使用上页幻灯片中定义的类,以下代码输出结果是什么?

    总结:

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

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

    4、请运行TestStaticInitializeBlock.java示例,观察输出结果,总结出“静态初始化块的执行顺序”。

    代码:

     1 package demo;
     2 class Root
     3 {
     4     static{
     5         System.out.println("Root的静态初始化块");
     6     }
     7     {
     8         System.out.println("Root的普通初始化块");
     9     }
    10     public Root()
    11     {
    12         System.out.println("Root的无参数的构造器");
    13     }
    14 }
    15 class Mid extends Root
    16 {
    17     static{
    18         System.out.println("Mid的静态初始化块");
    19     }
    20     {
    21         System.out.println("Mid的普通初始化块");
    22     }
    23     public Mid()
    24     {
    25         System.out.println("Mid的无参数的构造器");
    26     }
    27     public Mid(String msg)
    28     {
    29         //通过this调用同一类中重载的构造器
    30         this();
    31         System.out.println("Mid的带参数构造器,其参数值:" + msg);
    32     }
    33 }
    34 class Leaf extends Mid
    35 {
    36     static{
    37         System.out.println("Leaf的静态初始化块");
    38     }
    39     {
    40         System.out.println("Leaf的普通初始化块");
    41     }    
    42     public Leaf()
    43     {
    44         //通过super调用父类中有一个字符串参数的构造器
    45         super("Java初始化顺序演示");
    46         System.out.println("执行Leaf的构造器");
    47     }
    48 
    49 }
    50 
    51 public class TestStaticInitializeBlock
    52 {
    53     public static void main(String[] args) 
    54     {
    55         new Leaf();
    56         
    57 
    58 }

    结果截图:

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

     

  • 相关阅读:
    关于近期对于移动端开发的一些看法
    前端加密
    移动开发小知识大全
    介绍下京东的(选项卡中的选项卡)是怎么实现的
    一样的代码,一样的逻辑,不一样的效果(选项卡和轮播图)
    总结一下meta标签
    cookie的使用
    移动端常用代码
    上拉加载实现
    关于jQuery出现的新添加元素点击事件无效
  • 原文地址:https://www.cnblogs.com/ray-freedom/p/6048010.html
Copyright © 2020-2023  润新知