zoukankan      html  css  js  c++  java
  • Java04-动手动脑

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

     如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法。

    2、运行以下程序,观察输出结果,总结出“静态初始化块的执行顺序”。

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

    }
    }

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

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

    package Test;

    class Example
    {
    public static void display()
    {
    System.out.println("类的方法");
    }
    public void displayOne()
    {
    System.out.println("对象的方法");
    }
    public static void main(String[] args)
    {
    Example.display();
    Example e=new Example();
    e.displayOne();
    e.display();
    }
    }

  • 相关阅读:
    页面跳转刷新
    表格表头绘制对角线(不固定表格宽高)
    发送邮件的工具类
    重写equals()和hashCode()
    设计模式--原型模式[转载]
    设计模式--外观模式
    设计模式--代理模式
    js处理json js递归
    MySQL锁详解
    开发一个微信小程序实例教程
  • 原文地址:https://www.cnblogs.com/huyangyang/p/5983788.html
Copyright © 2011-2022 走看看