首页 > 其他分享 >建民老师有关类和对象动手动脑的实践性报告

建民老师有关类和对象动手动脑的实践性报告

时间:2022-10-03 18:35:23浏览次数:49  
标签:初始化 Leaf 构造方法 对象 实践性 动脑 Mid 执行 建民

有关动手动脑的实验性总结
1.P29 首先定义了一个类Foo,在这个类中包含数据成员value以及有参构造函数Foo( int initValue );
在Test类中用Foo类的无参构造方法去创建一个实例化对象,发现编译出错了,原因如下:
首先我们要知道,一切类的超类是Object,而object这个类中只有无参构造方法,其他任何一个类都直接或间接继承了这个类,在创建对象
的时候,会首先调用object类的无参构造方法,所以在一个类中,要不然不写构造方法,要不然无参和有参都写上,只写有参不写无参是不行的。
2.P34进行试验
首先经过测试发现,当使用无参构造方法去实例化一个对象的时候,我们发现filed的值为200,即初始化块里面的赋值操作
但是当把赋值语句和初始化块颠倒之后,发现filed的值为100;
当使用有参构造方法去实例化对象时,这个时候filed的值为我们自己传进去的值。
总结:优先选择有参构造方法,默认值和初始化块看谁在下面,就使用谁的值。
3.P39动手动脑 运行TestStaticInitializeBlock.java
首先先执行static修饰的静态初始化块,原因如下:
使用 static 修饰符定义的初始化块,称为静态初始化块,也叫类初始化块。
普通初始化块是对 对象 初始化, 类初始化块是对类初始化。
因此静态初始化块总是比普通初始化块先执行。
分析这个案例程序:首先是爷爷类(基类)Root,然后是爸爸类(Root的子类)Mid,最后是孩子类(Mid的子类)Leaf
在主方法中,new了一个Leaf的对象,我们知道先执行静态初始化块,并且是按辈分一个一个执行。
所以执行了Root、Mid、Leaf的静态初始化块,执行完静态就执行普通的初始化块,对于同一个类对象来讲,先执行初始化块,后执行构造方法。
所以接着又执行了Root的普通初始化块、无参数构造器,接着是Mid的普通初始化块、无参数构造器。
这个时候注意了,在Leaf中调用了super,也就是Mid的有参构造方法,所以再执行Mid的带参构造器,最后执行Leaf的初始化块和构造器。
4.P42 一个有趣的问题
答案:可以把静态方法的参数变成类的实例化对象,或者在静态方法中定义一个实例化对象,再通过实例化对象,访问非静态成员。
public class test_01
{
public int sb = 0;
public static int sb1 = 0;
public static void method(test_01 a){
System.out.println(a.sb);
}
public static void main(String[] args)
{
test_01 sba = new test_01();
test_01.method(sba);
}
}
//一个非常非常简单的实现。

标签:初始化,Leaf,构造方法,对象,实践性,动脑,Mid,执行,建民
From: https://www.cnblogs.com/laohei114514/p/16750961.html

相关文章

  • 9月30Java类与对象中动手动脑
    类与对象定义了一组大体相似的对象。一个类所包含的方法和数据描述一组对象的共同行为和属性对象则是类的具体化,是类的实例。类通过派生类可以有子类,同样也可以有父类,形......
  • 动手动脑(四)静态初始化块的执行顺序 9.30
    packagetest2;classRoot{ static { System.out.println("Root的静态初始化块"); } { System.out.println("Root的普通初始化块"); } publicRoot() { ......
  • 动手动脑(三)9.30
    packagetest2;publicclassDemo2{ publicstaticvoidmain(String[]args){ Fooobj1=newFoo(); }}classFoo{ intvalue=100; publicFoo(in......
  • 动手动脑课后实验2
    一般初始化:1.没有继承静态变量、静态初始化块-->变量、变量初始化块–>构造方法2.有继承的情况父类静态变量、父类静态初始化块–>子类静态变量、子类静态初始化块–>......
  • Java第二讲动手动脑
    1.运行结果  上述代码方法名相同,但是数据类型不同,体现了Java重载的特点(1)方法名相同(2)参数类型不同,参数个数不同,或者是参数类型的顺序不同。也体现了Java中,当函数名......
  • 信2105-3班张少阳第二章方法有关动手动脑问题的解决和报告
    在Java语言中,其主要模块分为:类、方法、包。而包可以理解为一个文件夹,里面存放着各种Java文件供我们使用。而我们的一切实际操作都是在方法中实现的,可以理解为类给了我们一......
  • 动手动脑:类方法的编写
     静态成员变量又称类变量,静态成员方法又称类方法,它们统称为静态成员或类成员。静态成员由static修饰,是属于整个类的,所有的对象共享这些静态成员。不需要创建任何对象,静态......
  • 动手动脑——纯随机数发生器
    线性同余方法(LCG)是一种产生伪随机数的方法。 其中A,B,M是产生器设定的常数。LCG的周期最大为M,但大部分情况都会少于M。要令LCG达到最大周期,应符合以下条件:1、B,M互......
  • java 动手动脑 方法重载
    如下代码://MethodOverload.java//UsingoverloadedmethodspackageHJssss;publicclasszhuce{ publicstaticvoidmain(String[]args){ System.out.printl......
  • 动手动脑随机数发生器与查看不同
    //随机生成1000个整数publicclassTest07{publicstaticvoidmain(String[]args){for(inti=0;i<1000;i++){intmin=2;//定义随机数的最小值......