首页 > 编程语言 > 详细

java《类与对象》课后作业

时间:2015-10-16 18:38:44      阅读:248      评论:0      收藏:0      [点我收藏+]

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(){

}
}

输出结果:

 

技术分享

请依据代码的输出结果,自行总结Java字段初始化的规律:

静态字段/实例字段可以在声明时同时赋初值,也可以在静态/实例代码块中初始化,或者在构造方法中赋初值。

Java类初始化时,首先初始化静态字段,故在给实例字段赋初始值时,可以引用类中定义的静态字段(包括从父类继承的静态字段)。反之不成立。

字段的初始化按位置顺序执行,故后续位置的字段的初始化,可以使用之前初始化的字段。但如果在字段初始化中使用后续的字段,则会产生编译错误。

常量字段只能被赋值一次,否则会产生编译错误。

在创建第一个实例或引用任何静态成员之前,将自动调用静态初始化代码块,执行静态初始化;在创建第一个实例时,将自动调用实例初始化代码块,执行实例初始化。类的静态初始化在给定的程序中至多执行一次,对象的实例初始化则每次创建对象都要执行。

2.当多个类之间有继承关系时,创建子类对象会导致父类初始化块的执行。请自行编写示例代码验证以上结论。

public class Jicheng {
public static void main(String[] args){
Stu s = new Stu();
s.print();
}
}

class Student{
String name;
int age;
{
name="huangyi";
age=19;
}
}

class Stu extends Student{
int grade=100;
void print()
{
System.out.println("name:"+name+"\nage:"+age+"\ngrade:"+grade);
}
}

结果截图:

技术分享

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

静态方法中不能直接访问同一类中的非静态成员,而必须先创建对象,再通过对象访问成员。

using System;
class App
{
    static int i;
    private static void Main()
    {
        App t = new App();
        t.test();
        Console.ReadKey();
    }
 
    private void test()
    {
        i = 10;
        Console.WriteLine(i);
    }
}
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() + "个对象");
}
}

结果截图:

技术分享

 

java《类与对象》课后作业

原文:http://www.cnblogs.com/hyluckydog/p/4885907.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!