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

    输出结果:

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

  • 相关阅读:
    android29
    android28
    android27
    android26
    Dynamics CRM2011 MspInstallAction failed when installing an Update Rollup
    Dynamics CRM Import Solution Attribute Display Name description is null or empty
    The service cannot be activated because it does not support ASP.NET compatibility
    IIS部署WCF报 无法读取配置节“protocolMapping”,因为它缺少节声明
    Unable to access the IIS metabase.You do not have sufficient privilege
    LM算法与非线性最小二乘问题
  • 原文地址:https://www.cnblogs.com/Daddy/p/4888624.html
Copyright © 2011-2022 走看看