zoukankan      html  css  js  c++  java
  • 动手动脑|课后作业

    一、

    public class Test{
     public static void main(String[] args){
    Foo obj1=new Foo();
    }
    }
    class Foo{
     int value;
     public Foo(int initVaule){
      vaule=initVaule;
    }
    }

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

     同一个类可以有多个构造函数,多个构造函数之间通过参数来区分,这是方法重载的一个实例。

    构造函数之间可以相互调用

    二、

    public class aca {
    public int field=100;
    {
    field=200;
    }
    public aca(int value) {
    this.field=value;
    }
    public aca() {

    }
    public static void main(String args[]) {

    aca obj=new aca();
    System.out.println(obj.field);
    obj=new aca(300);
    System.out.println(obj.field);
    }
    }

    当调用默认构造方法时,调用初始化体进行初始化字段;

    当调用有参构造方法时,调用有参构造方法进行字段初始化;

    三、

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

    结果:

    1、静态初始化块只执行一次。

    2、创建子类型的对象时,也会导致父类型的静态初始化块的执行

    四、

    静态方法只能访问静态成员,实例方法可以访问静态和实例成员。之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,而静态方法在执行时,并不一定存在对象。同样,因为实例方法可以访问实例成员变量,如果允许静态方法调用实例方法,将间接地允许它使用实例成员变量,所以它也不能调用实例方法。基于同样的道理,静态方法中也不能使用关键字this。 

    五、

    public class sum {
        public static int a=0;
    
        int c;
    
        public sum(int cc)
    
        {
    
        c=cc;
    
        a++;
    
        }
    
        public int get()
    
        {
        return a;
        }
    }
    
    public class cxc {
        public static void main(String[] args)
    
        {
    
        sum one=new sum(1);
    
        sum tow=new sum(2);
    
        sum three=new sum(3);
    
        System.out.println(one.get());
    
        }
    }

    统计创建类的个数;

  • 相关阅读:
    抽丝剥茧设计模式- 责任链模式应用场景
    抽丝剥茧设计模式-工厂和抽象工厂模式
    抽丝剥茧设计模式-你真的懂单例模式吗?
    抽丝剥茧设计模式- 啰嗦几句
    生产环境ng配置
    Linux命令
    内容过滤报错
    user 报错
    cxlabel 显示不全的解决方法
    关于SQL事务的一些坑
  • 原文地址:https://www.cnblogs.com/KYin/p/9825998.html
Copyright © 2011-2022 走看看