zoukankan      html  css  js  c++  java
  • 第三次作业

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

     

    public class Student{

    public static void main(String[] args){

    Information a = new Information();

    a.OutputInformation();

    Information b = new Information();

    b.OutputInformation();

    } }

    class Information{

    static int num=0;

    Information()

    { num++;

    }

    public void OutputInformation()

     {

    System.out.println("你已经创建了"+num+"个对象!");

    }

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

     

    package com;

    class StaticDemo { static int x;//静态变量x int y;//实例变量y static public int getX() { return x; } static public void setX(int newX) { x = newX; } public int getY() {

    return y; } public void setY(int newY) { y = newY; } }

    public class ShowDemo { public static void main(String[] args) { System.out.println("静态变量x="+StaticDemo.getX()); //System.out.println("实例变量y="+StaticDemo.getY());// 非法,编译时将出错 //why StaticDemo a= new StaticDemo(); StaticDemo b= new StaticDemo(); a.setX(1); a.setY(2); b.setX(3); b.setY(4); System.out.println("静态变量a.x="+a.getX()); System.out.println("实例变量a.y="+a.getY()); System.out.println("静态变量b.x="+b.getX()); System.out.println("实例变量b.y="+b.getY()); } }

    当多个类之间有继承关系时,创建子类对象会导致父类初始化块的执行。

    package com;

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

     

     

     

  • 相关阅读:
    java内存区域模型
    Java类加载器(双亲委派模型)(综述)
    2.无重复字符的最长子串
    浅谈Java中的对象和引用
    OSI七层协议大白话解读
    MPLS
    计算机网络为什么要分为五层结构?其依据是什么?
    前端技巧小结
    移动端尺寸新写法-rem
    编写高质量代码:Web前端开发修炼之道(四)
  • 原文地址:https://www.cnblogs.com/Jiao827/p/4888487.html
Copyright © 2011-2022 走看看