zoukankan      html  css  js  c++  java
  • 构造函数(构造方法、构造器)

    java构造函数,也叫构造方法,是java中一种特殊的函数。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值
    小细节:

    • 当一个类中没有定义构造函数时,那么系统会默认给该类加入一个空参数的构造函数。这个默认的构造函数的权限和所属类一致。
    • 子类的构造函数默认第一行有一条隐式的语句 super(),用于访问父类中空参数的构造函数。
    • 当在类中自定义了构造函数后,默认的构造函数就没有了。
    • 一个对象建立,构造函数只运行一次。
    • 构造函数名必须与类同名,没有返回值。
    public class A{  
       public A(){  
          System.out.println("调用了无参的构造函数");  
       }  
       public A(String mess){  
          System.out.println("调用了有参的构造函数 
    " + "参数内容为:"+ mess);   
     }  
    

    构造代码块

    对象一建立就运行,而且优先于构造函数执行。作用是给对象进行初始化。

    • 构造代码块是给所有对象进行统一初始化,
    • 构造代码块中定义的是不同对象共性的初始化内容。
    
    /*
    对象一建立就会调用与之对应的构造函数。
    
    构造函数的作用:可以用于给对象进行初始化。
    
    构造函数的小细节:
    当一个类中没有定义构造函数时,那么系统会默认给该类加入一个空参数的构造函数。
    
    当在类中自定义了构造函数后,默认的构造函数就没有了。
    
    
    构造函数和一般函数在写法上有不同。
    
    在运行上也有不同。
    构造函数是在对象一建立就运行。给对象初始化。
    而一般方法是对象调用才执行,给是对象添加对象具备的功能。
    
    一个对象建立,构造函数只运行一次。
    而一般方法可以被该对象调用多次。
    
    什么时候定义构造函数呢?
    当分析事物时,该事物存在具备一些特性或者行为,那么将这些内容定义在构造函数中。
    
    
    */
    class Person {
        private String name;
        private int age;
        {
            System.out.println("person code run");//对象一被调用就运行
        }
    
        Person() {
            System.out.println("A: name = " + name + ",age =" + age);
        }
    
        Person(String n) {
            name = n;
            System.out.println("B: name = " + name + ", age =" + age);
        }
    
        Person(String n, int a) {
            name = n;
            age = a;
            System.out.println("C: name =" + name + ", age =" + age);
        }
    }
    
    class PersonDemo2 {
        public static void main(String[] args) {
            Person p1 = new Person();
            Person p2 = new Person("lisi", 5);
        }
    }
    
    

    运行结果
    person code run
    A: name = null,age =0
    person code run
    C: name =lisi, age =5

    静态代码块

    随着类的加载而执行,只执行一次,并优先于主函数。用于给类进行初始化的。

    /*
    格式:
    static{
    	静态代码块中的执行语句。
    }
    */
    class StaticCode {
        //静态代码块
        static {
            System.out.println("c");
        }
        //构造代码块
        {
            System.out.println("d");
        }
        //无参数构造函数
        StaticCode() {
            System.out.println("f");
        }
        //有参数构造函数
        StaticCode(int x) {
            System.out.println("e");
        }
    }
    
    class StaticCodeDemo {
        static {
            System.out.println("a");
        }
        public static void main(String[] args) {
            new StaticCode(4);
        }
        static {
            System.out.println("b");
        }
    }
    

    主函数中静态代码块——StaticCode中静态代码块——StaticCode中构造代码块——StaticCode中构造函数

    运行结果:
    a
    b
    c
    d
    e

  • 相关阅读:
    JSON格式解析和libjson使用简介(关于cjson的使用示例)
    我还没死!!微信公众号——自媒体的营销之路
    android应用开发-从设计到实现 3-4 静态原型的状态栏
    一种绝对提高开发水平的方法
    年近30------职业回想与思考
    LeetCode Populating Next Right Pointers in Each Node
    uploadify在火狐下上传不了的解决方式,java版(Spring+SpringMVC+MyBatis)具体解决方式
    struct和typedef struct
    奔五的人学ios:swift竟然没有字符串包括,找个简单的解决方法
    Floyd算法解说
  • 原文地址:https://www.cnblogs.com/hen-java/p/12600762.html
Copyright © 2011-2022 走看看