第四次作业,类,构造函数的初始化

类的构造方法:

    public class Test {

        public static void main(String[] args) {

            Foo obj1 = new Foo();

        }

    }

    class Foo {

        int value;

        public Foo (int initValue) {

        value = initValue;

        }

    }

无法通过编译。
因为如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法。

多构造函数:

同一个类可以有多个构造函数,多个构造函数之间通过参数来区分。这是方法重载的一个实例。

构造函数之间可以相互调用。

    class Fruit {
            int grams;
            int calsPerGram;
            Fruit() {
                this(55,10);
            }
            Fruit(int g,int c){
                grams=g;
                calsPerGram=c;
            }
    }

类的初始化:

Java字段初始化的规律,

如果使用上面定义的类,思考一下代码的输出结果:

    public static void main(String[] args) {
      InitializeBlockClass obj = new InitializeBlockClass();
      System.out.println(obj.field);  //
      obj = new InitializeBlockClass(300);
      System.out.println(obj.field);  //
    }

 

规律(类字段的初始化顺序):

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

执行类的构造函数。

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

ok

posted @ 2016-10-21 14:54  世界高度  阅读(194)  评论(0编辑  收藏  举报