• 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、源代码

    //mao2015.10.16

    //初始化

    class InitializeBlockClass

    {

        {

            field = 200;

        }

        public int field = 100;

        public InitializeBlockClass(int value)

        {

            this.field = value;

        }

        public InitializeBlockClass()

        {

           

        }

    }

    public class Test3 {

     

        public static void main(String[] args) {

            // TODO Auto-generated method stub

            InitializeBlockClass obj = new  InitializeBlockClass();

            System.out.println(obj.field);

            obj = new InitializeBlockClass(300);

            System.out.println(obj.field);

        }

    }

    2、结果截图

    3、总结Java字段初始化规律

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

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

    三:

    1、  源码

    //mao2015.10.17

    //静态初始化块的执行顺序

     

    class Root

    {

        Static

    {

            System.out.println("Root的静态初始化块");

        }

        {

            System.out.println("Root的普通初始化块");

        }

        public Root()

        {

            System.out.println("Root的无参数的构造器");

        }

    }

    class Mid extends Root

    {

        Static

    {

            System.out.println("Mid的静态初始化块");

        }

        {

            System.out.println("Mid的普通初始化块");

        }

        public Mid()

        {

            System.out.println("Mid的无参数的构造器");

        }

        public Mid(String msg)

        {

            //通过this调用同一类中重载的构造器

            this();

            System.out.println("Mid的带参数构造器,其参数值:" + msg);

        }

    }

    class Leaf extends Mid

    {

        Static

    {

            System.out.println("Leaf的静态初始化块");

        }

        {

            System.out.println("Leaf的普通初始化块");

        }  

        public Leaf()

        {

            //通过super调用父类中有一个字符串参数的构造器

            super("Java初始化顺序演示");

            System.out.println("执行Leaf的构造器");

        }

     

    }

     

    public class TestStaticInitializeBlock

    {

        public static void main(String[] args)

        {

            new Leaf();

        }

    }

    2、结果

    3、总结出“静态初始化块的执行顺序”

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

    四:

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

    请编写代码验证你的想法。

    1、源码

    //mao2015.10.17

    //调用

    class Use

    {

        static int a = 1;

        int b = 2;

    }

    public class TestStatics {

     

        public static void main(String[] args) {

            // TODO Auto-generated method stub

            System.out.println(Use.a);

            //System.out.println(Use.b);报错

            Use use = new Use();

            System.out.println(use.b);

        }

    }

    2、结果

    3、  结论

    System.out.println(Use.a);

        //System.out.println(Use.b);报错

    五:

    使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数。请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?”。

    1、源码

    //mao2015.10.17

    //跟踪某个类所创建对象的个数

    class Count

    {

        static int i = 0;

        public Count()

        {

            i++;

        }

        void getI()

        {

            System.out.println("已创建 "+i+"个");

        }

    }

    public class TestCount {

     

        public static void main(String[] args) {

            // TODO Auto-generated method stub

            Count count = new Count();

            count.getI();

        }

     

    }

    2、结果

    3、  总结

    每创建一次,就会使用一次构造函数,所以用构造函数来计数。

  • 相关阅读:
    [LeetCode] 131. 分割回文串
    [LeetCode] 130. 被围绕的区域
    [LeetCode] 128. 最长连续序列
    [LeetCode] 129. 求根到叶子节点数字之和
    转:阿里巴巴集团技术丛书——淘宝一线团队实践
    转:开源知识库
    转:php使用websocket示例详解
    阿里巴巴上市背后的技术力量
    转:php中实现精确设置session过期时间的方法
    转:Java程序员最常用的8个Java日志框架
  • 原文地址:https://www.cnblogs.com/justmaomao/p/4888477.html
Copyright © 2020-2023  润新知