zoukankan      html  css  js  c++  java
  • Java类与对象——几个课堂例子的总结及作业

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

    源代码:

     1 import java.util.Scanner;
     2 
     3 class sss123 {
     4     //将用来计次的变量times给初始值为0
     5     public static int times=0;
     6     sss123() {
     7         //构造函数,每创建一个实例times就增加1
     8         times=times+1;
     9     }
    10 }
    11 
    12 public class StaticValue {
    13     public static void main(String[] args) {
    14         sss123 s1 = new sss123();
    15         sss123 s2 = new sss123();
    16         sss123 s3 = new sss123();
    17         //可以看到当前我们已经手动创建了3个对象,接下来调用sss123类的静态变量查询创建了多少对象
    18         System.out.println("当前创建的对象个数为 "+sss123.times);
    19     }
    20 }
    21 
    22 //public class StaticValue {
    23 //    public static void main(String[] args) {
    24 //        String YorN=new String();
    25 //        YorN="Y";
    26 //        int i=0;
    27 //        Scanner sc = new Scanner(System.in);
    28 //        while(YorN.equals("Y"))
    29 //        {
    30 //            System.out.println("正在创建一个对象");
    31 //            //我希望每循环一次就创建一个对象,但是不知道怎么表达
    32 //            sss123 s = new sss123();
    33 //            System.out.println("创建对象完成");
    34 //            System.out.println("当前共创建对象个数为 "+sss123.times);
    35 //            System.out.println("是否要继续创建对象?是(Y)/否(N)");
    36 //            YorN=sc.nextLine();
    37 //        }
    38 //    }
    39 //}

    课堂例子:
    1、对TestStaticInitializeBlock.java的总结:

    源代码:

     1 class Root
     2 {
     3     static{
     4         System.out.println("Root的静态初始化块");
     5     }
     6     {
     7         System.out.println("Root的普通初始化块");
     8     }
     9     public Root()
    10     {
    11         System.out.println("Root的无参数的构造器");
    12     }
    13 }
    14 class Mid extends Root
    15 {
    16     static{
    17         System.out.println("Mid的静态初始化块");
    18     }
    19     {
    20         System.out.println("Mid的普通初始化块");
    21     }
    22     public Mid()
    23     {
    24         System.out.println("Mid的无参数的构造器");
    25     }
    26     public Mid(String msg)
    27     {
    28         //通过this调用同一类中重载的构造器
    29         this();
    30         System.out.println("Mid的带参数构造器,其参数值:" + msg);
    31     }
    32 }
    33 class Leaf extends Mid
    34 {
    35     static{
    36         System.out.println("Leaf的静态初始化块");
    37     }
    38     {
    39         System.out.println("Leaf的普通初始化块");
    40     }    
    41     public Leaf()
    42     {
    43         //通过super调用父类中有一个字符串参数的构造器
    44         super("Java初始化顺序演示");
    45         System.out.println("执行Leaf的构造器");
    46     }
    47 
    48 }
    49 
    50 public class TestStaticInitializeBlock
    51 {
    52     public static void main(String[] args) 
    53     {
    54         new Leaf();
    55     }
    56 }


    运行结果:

    由此可见,静态初始化块的执行顺序为:先执行父类的静态初始化块,再执行子类的静态初始化块,然后在执行父类的普通初始化块和构造函数,最后执行子类的普通初始化块和构造函数

    Java字段初始化的规律:先执行静态初始化快,再执行普通初始化快,在执行构造函数,再执行字段的初始值。 

    这个错的地方在于构造函数中要求传入一个整形变量,但是在主函数中使用的时候并没有传入整形变量,导致出错

  • 相关阅读:
    自动化设计自动化测试介绍
    自动化设计框架介绍 TestReport
    自动化设计自动化测试环境搭建<二>
    自动化设计自动化测试环境搭建<三>
    浅谈敏捷模型
    自动化设计框架介绍 TestLog
    自动化设计框架介绍 TestScript
    自动化设计框架介绍
    LoadRunner脚本录制常见问题整理<转>
    自动化设计框架介绍 TestSnap
  • 原文地址:https://www.cnblogs.com/yychnbt/p/4888573.html
Copyright © 2011-2022 走看看