类
构造函数(构造方法、构造器)
java构造函数,也叫构造方法,是java中一种特殊的函数。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值
小细节:
- 当一个类中没有定义构造函数时,那么系统会默认给该类加入一个空参数的构造函数。这个默认的构造函数的权限和所属类一致。
- 子类的构造函数默认第一行有一条隐式的语句 super(),用于访问父类中空参数的构造函数。
- 当在类中自定义了构造函数后,默认的构造函数就没有了。
- 一个对象建立,构造函数只运行一次。
- 构造函数名必须与类同名,没有返回值。
public class A{
public A(){
System.out.println("调用了无参的构造函数");
}
public A(String mess){
System.out.println("调用了有参的构造函数 \n" + "参数内容为:"+ 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