zoukankan      html  css  js  c++  java
  • 第三次上课 PPT 课后测试

    第一个:

    class InitiallizeBlockClass
    {
        {
            field=200;
        }
        public int field=100;
        public InitiallizeBlockClass(int value)
        {
            this.field=value;
        }
        public InitiallizeBlockClass()
        {
            
        }
    }
    
    public class Example {
        public static void main(String args[])
        {
            InitiallizeBlockClass obj=new InitiallizeBlockClass();
            System.out.println(obj.field);
            
            obj=new InitiallizeBlockClass(300);
            System.out.println(obj.field);
        }
    }

    输出结果:

    Java字段初始化规律:若一个之前后被赋值两次,那么前一次的赋值会被第二次所覆盖。

    第二个:

    class people
    {
        public String species;
        {
            species="Human";
        }
    }
    
    class man extends people
    {
        
    }
    
    public class Example {
        public static void main(String args[])
        {
            man m=new man();
            System.out.println(m.species);
        }
    }

    People为父类,man为子类,子类中并未进行定义,但是可以输出结果,而且结果是在父类中定义的结果。所以当多个类之间有继承关系时,创建子类对象会导致父类初始化块的执行,成立。

    第三个:

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

    输出结果:

    静态初始化块的执行顺序:先执行static的赋值,之后再从上到下,依次进行各个类的赋值。

    第四个:

    class Employee
    {
        String name;
        long salary;
        static void information(Employee e)
        {
            System.out.println("姓名为:"+e.name);
            System.out.println("薪水为:"+e.salary);
        }
    }
    
    public class Example {
        public static void main(String args[])
        {
            Employee e=new Employee();
            e.name="Hui";
            e.salary=5000;
            e.information(e);
        }
    }

    输出结果:

    静态方法中只允许访问静态数据,在静态方法中访问类的实例成员的话,就先实例化类,得到一个实例变量,将要使用的类作为参数传递给静态方法。

  • 相关阅读:
    redis面试题总结
    TP5隐藏index.php
    php四种文件加载语句
    【Redis缓存机制】1.Redis介绍和使用场景
    Linux cpufreq 机制了解 arm
    数码设备发展的核心:分离,互联网营销 狼人:
    豆瓣:“慢公司”,互联网营销 狼人:
    互联网周刊:互联网进化论,互联网营销 狼人:
    怀念中国雅虎:技术文化和惨淡命运,互联网营销 狼人:
    菜鸟玩GAE(Google App Engine)完全指南,互联网营销 狼人:
  • 原文地址:https://www.cnblogs.com/Daddy/p/4888624.html
Copyright © 2011-2022 走看看