zoukankan      html  css  js  c++  java
  • 课后作业

                                       姓名:苏月       班级:信1405-1班      学号20142956

         在学习了类和对象这一章节,我发现我更加懂得了java这门课程的一些基础性的问题,仿佛一切在我面前都明了了。

         在这一章节中,有许多的动手动脑的问题,如:

     以下代码为何无法通过编译?哪儿出错了?

    从中我们可以看出:如果编程中自己定义了一个自定义,那么编译软件就不会启动默认自定义。而这个程序中Foo就出现了这样的问题。

    在java的初始化过程中,最好不要出现初始化块,保证一个字段只初始化一次,而且在你构造了一个函数的同时,如果你调用了这个函数生成了一个实例时InitializeBlockClass obj=new InitializeBlockClass();其obj调用的是初始化的值,而obj = new InitializeBlockClass(300);却是自己输入的值。

    2、class Date{

             Static{

                  System.out.println(“100”);

                  }

                   {

                        System.out.println(“200”);

                   }

    Public Date()

    {

    System.out.println(“Date的无参数构造器”);

    }

    }

    class Cat extends Date{

           static{

                  System.out.println("300");

           }

           {

                  System.out.println("400");

           }

           public Mid()

           {

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

           }

           public Mid(String msg)

           {

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

                  this();

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

           }

    }

    class Leaf extends Cat{

           static{

                  System.out.println("500");

           }

           {

                  System.out.println("600");

           }    

           public Leaf()

           {

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

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

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

           }

    }

    public class TestStaticInitializeBlock

    {

           public static void main(String[] args)

           {

                  new Leaf();

                 

           }

    }

    4、静态初始化的顺序:

    如果是多个父类关联关系一个子类继承,静态的初始化只执行一次,而且在创建子类型的对象时,也会导致父类静态的初始化块的执行。

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

                 

           }

    }

    5、packagedemo;

    public class Tongji{

    private staticint n;

    Public Tongji(){

    n++;//new一个对象的时候给n加1;

    Public staticint  getNum(){

    return n;//返回n的值

    }

    Public static void main()

    {

    Tongji t1 = new Tongji();

    Tongji t2 = new Tongji();

    Tongji T3 = new Tongji();//创建对象;

    System.out.println(“共有对象的个数:”+Tongji.getNum())}}

  • 相关阅读:
    git的使用
    模块化的 require 和 import的区别
    Javascript模块化编程(二)commonJS规范和AMD规范
    Javascript模块化编程(三):require.js的用法
    SQL精华语句
    Convert sql 函数格式
    sql分页存储过程(汇总)
    jira和svn结合
    使用Java Service Wrapper 把Java程序作为Windows系统服务
    Eclipse使用技巧
  • 原文地址:https://www.cnblogs.com/syhn/p/4887013.html
Copyright © 2011-2022 走看看