java 类及对象的课后作业_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(){

}

}

输出结果:

4bde9164703bbad76ee9e1b0d257c2ef.png

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

}

}

结果截图:

5cc9d7939bb760f8917fb5651134d3c0.png

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

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

f3e627edf729f330f408394b6d6eaede.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值