类与对象课后作业

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 }

结果截图:

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

时间: 2024-10-14 07:13:15

类与对象课后作业的相关文章

l类与对象课后作业

java 的初始化规律 执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面”. 执行类的构造函数. 类的初始化块不接收任何的参数,而且只要一创建类的对象,它们就会被执行.因此,适合于封装那些“对象创建时必须执行的代码” 当多个类之间有继承关系时,创建子类对象会导致父类初始化块的执行. 请自行编写示例代码验证以上结论. public class InitializeBlockDemo { /**   * @param args   */ public static vo

Java类和对象课后作业

1. public class test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Foo obj1=new Foo(); Foo onj2=new Foo(); System.out.println(obj1==obj2); } } class Foo{ int value=100; } 截图: 总结: 当"=="施加于原始数据类

类和对象课后作业

  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.fi

类与对象课后作业第一题

public class Test { private int id; private String name; private static long count; private final static ThreadLocal tl=new ThreadLocal(); public Test() { super(); count++; tl.set(count); } public long getCount(){ return (Long)tl.get(); } public stat

类与对象的作业

(1)请依据代码的输出结果,自行总结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);

论团队(类与对象邮箱作业再次提交)

大家众所周知,一个项目的完成需要团队的努力,团队是至少以三个人为规模的.首先一个人算不上团队,只能称之为个体,两个人则相互支持,三个人便是团队,这样的团队有其基本的特性,主从监督和责任.当然并不是说一个人不能成功,有很多并非团队成功的案例,例如王江民先生一个人创造出kv100,kv200反病毒软件.两个人相互支撑也是可以成功的例如:周辉和刘杰先生创造出av95反病毒软件.但现在的项目一般都需要团队共同完成.既然是团队就需要领导,这个领导不需要像程咬金一样的牛人,但必须像李离一样具有死士的精神,项

JAVA类与对象作业——动手动脑以及课后实验性问题

一: 1.源代码 //MAO2015.10.6 //foo class Foo { int value; public Foo(int initValue) { value = initValue; } } public class Test2 { public static void main(String[] args) { Foo obj1 = new Foo(2); } } 2.截图 3.总结 如果一个类提供自定义的构造方法,导致系统不再提供默认构造方法. 二: 1.源代码 //mao2

Java类与对象的课后练习

Java类与对象的课后练习编程题(java2实用教程P111) 这章内容自学完了,在做教材课后其他练习题的时候(只要自己仔细)都没啥问题,但在做最后一道上机编程题的时候问题出现了,在阅读题目的时候自己能感受到的是这道题不难(的确也不难),我也很快写了出来,但运行程序的时候,结果一直不正确,最后改来改去都不对,思路是对的,分步执行的时候也感觉是有个地方出了问题但就是揪不出来,最后又把课本的前面的例子反复的看对比,最后找到了问题: System.out.println("cpu的速度:"+

Java作业03 (动手动脑和课后作业1.使用下面定义的类,以下代码输出结果是什么?)

1.使用下面定义的类,以下代码输出结果是什么? 输出结果: 请依据代码的输出结果,自行总结Java字段初始化的规律. Java初始化的地方有两个:初始化块和构造函数,其中初始化又分为实例初始化块和静态初始化块,实例初始化块没有关键字修饰,而静态初始化块由static修饰. 执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面” 执行类的构造函数:类的初始化块不接收任何的参数,而且只要一创建类的对象,它们就会被执行.因此,适合于封装那些“对象创建时必须执行的代码”. 2.