java 05 构造函数-构造代码块

//构造函数Construct
——————————————————————
类有默认的构造函数.
public xxx(){
}
作用:一般用来初始化成员属性和成员方法的,即new对象产生后,就调用了对象了属性和方法

1.构造函数函数名和类同名
2.不需要定义返回值类型
3.没有具体的返回值
4.作用是初始化对象

1.构造函数为什么没有返回值类型的声明?

    构造函数也是函数,返回的是类型,跟类名称一样,没必要再返回返回值,可以有 return语句

2.阐述对象创建的过程?

    如下列解释

3.为什么构造代码块可以访问之后定义的成员变量?

  构造代码块是一个匿名函数,可以访问成员变量,与顺序无关。是在栈中执行。

4.静态成员和非静态成员的区别?

    静态成员跟类有关,跟对象无关,比如看奔驰的车标,不需要买车。

5.如何理解this,什么时候用this?

    通过this来访问当前对象,指向自身的指针。

6.构造函数调用其他函数的方式?

    this();

类的成员
————————————————————————————————————
1.成员变量
2.成员函数
3.构造函数
4.构造代码块

对象创建过程
————————————————————————————————————
new Dog();
1.在内存中分配内存空间
2.对成员变量赋默认值
3.执行构造代码块或赋值语句,如果构造代码块有多个,那么按照顺序执行
5.成员变量赋初始值
6.构造函数

static代码块
_____________________________________________________
static 跟对象无关,访问的方式是class.xxx()
静态代码块再类加载过程中调用一次。可以有多个。通常放置对静态成员变量的初始化过程。

 this:指向对象自身的引用,可以看做是类中内置的成员变量

this():调用其他构造函数的方式,必须作为第一条语句。

class ConstructDemo{
public static void main (String[] args ){
Dog d =new Dog();//调用Dog类的构造函数,返回构造函数的值
Dog d =new Dog("小白");
Dog d =new Dog("小白","cv");//有参数的构造函数
d.watch();
}

}


class Dog{
//成员变量
private String name;
private String color;

//构造函数,名称跟类同名,构造函数用来创建对象的,
public Dog(){
name = n;
System.out.println("new dog~~~~~~~~");
}

//(String n)如有参数那么上面也必须传参数
public Dog(String n){
name = n;
System.out.println("new dog~~~~~~~~");
}

//多个构造函数,那么就用重载
public Dog(String c,String n){
name = n;
color = c;
System.out.println("new dog222~~~~~~~~");
}


//方法:成员函数
public void watch(){
System.out.println("汪汪汪~~~~");
}
}

构造代码块

--------------------------------------------------------------------------------------------------------------------------------------------

class ConstructDemo{
public static void main (String[] args ){
//Dog d =new Dog();//调用Dog类的构造函数,返回构造函数的值
//Dog d =new Dog("小白");
Dog d =new Dog("小白","cv");//有参数的构造函数
d.watch();
}

}


class Dog{
//成员变量
private String name ="旺财";
//private String name; 2
private String color;

//构造代码块 相当于一个方法 在栈中执行,那么对象要先行存在的 要想在所有的构造函数里面都打印 System.out.println("开始new 狗");
//跟顺序无关先执行构造代码块

{
name = "无名";
}

{
System.out.println("开始new 狗");
}


//构造函数,名称跟类同名,构造函数用来创建对象的,
public Dog(){
System.out.println("开始new 狗");
System.out.println("0");
System.out.println("new dog~~~~~~~~");
}



//(String n)如有参数那么上面也必须传参数
public Dog(String n){
name = n;
System.out.println("new dog~~~~~~~~");
}

//多个构造函数,那么就用重载

public Dog(String c,String n){
System.out.println("new dog222~~~~~~~~"+name);
}

/* public Dog(String c,String n){
name = n;
color = c;
System.out.println("new dog222~~~~~~~~"); 2
} */


//方法:成员函数
public void watch(){
System.out.println("汪汪汪~~~~");
}


}

静态代码块

——————————————————————————————————————————————————————

class ConstructDemo{
public static void main (String[] args ){
Dog d =new Dog("小白","cv");//有参数的构造函数
d.watch();
//new Dog();
}

}


class Dog{
//成员变量
private String color;

//构造代码块 相当于一个方法 在栈中执行,那么对象要先行存在的 要想在所有的构造函数里面都打印 System.out.println("开始new 狗");
//跟顺序无关先执行构造代码块

static{
System.out.println("static-1");
}

static{
System.out.println("static-2");
}


//多个构造函数,那么就用重载

public Dog(String c,String n){
System.out.println("new dog222~~~~~~~~"+name);
}

//方法:成员函数
public void watch(){
System.out.println("汪汪汪~~~~");
}

}

原文地址:https://www.cnblogs.com/simly/p/10073017.html