构造函数的相关知识

来源:互联网 发布:db2执行sql脚本有换行 编辑:程序博客网 时间:2024/06/05 16:24

 

构造函数的作用: 给对应的对象进行初始化。

构造函数的格式:

修饰符  函数名(形式参数列表){

初始化的语句;

}

 

构造函数要注意的细节:

1.  构造函数是没有返回值类型的。

2.  构造函数的函数名必须与类名一致。 

3.  构造函数并不是由我们手动调用的, 构造函数是在创建对应对象的时候jvm主动调用的(每创建一个对象就会调用一次构造函数)。

4.  如果一个类没有显式的添加一个构造函数,那么java编译器会为该类添加一个无参的构造函数。

5.  如果一个类已经显式的添加一个构造函数,那么java编译器则不会再为该类添加一个无参的构造函数。

6.  构造函数是可以以函数重载的形式存在多个的。

 

 

 

 

疑问:我们现在知道创建对象的时候,jvm需要调用到对应的构造方法,那么以前我们没有学构造方法,那么jvm还会调用到构造方法吗?而且构造方法存在吗?

 

存在构造方法的, 但是不是java虚拟机添加的,是java编译器添加的。

 

 

疑问2java编译器添加的无参构造函数的修饰符是什么? 

无参的构造函数的权限修饰符是与类名一致的。

 

 

如何反编译: 反编译可以使用jdk给我们提供的开发工具---javap

javap -c -l -private  class文件

 

需求: 使用一个java类描述一个婴儿。 

问题: 在现实生活中有两种婴儿,一出生就有姓名与身份证编号(白户)

   一种出生之后才有身份证编号与姓名(黑户)

 

//婴儿类

class Baby{

int id; //身份证编号

String name; // 名字

//无参的构造函数

public Baby(){

System.out.println("无参的构造函数调用了..");

}

 

 

//带参构造函数

public Baby(int i , String n){

id = i ;

name = n;

System.out.println("两个参数构造函数调用了..");

}

 

public void cry(){

System.out.println("哇哇哇....");

}

}

 

 

class Demo2 {

 

public static void main(String[] args) 

{

/*

Baby b1 = new Baby(); //黑户

b1.id = 110;

b1.name= "狗娃";

System.out.println("身份证:"+ b1.id+" 姓名:"+ b1.name);

*/

new Baby();

new Baby();//虚拟机自动调用,这里调用了两次

Baby b2 = new Baby(110,"狗剩");//白户

System.out.println("身份证:"+ b2.id+" 姓名:"+ b2.name);

}

}

 

 

/*

需求: 使用java类描述一个员工,员工具备的公共属性: id、 name、 age. 公共行为:上班   要求:一旦创建一个员工对象,那么该员工对象要马上具备相应的属性值。

 

*/

class Emp{

//事物的公共的属性

 

int id;

String name;

int age;

 

//构造函数

public Emp(int i , String n ,int a){

id =i;

name = n;

age = a;

}

 

 

//上班

public void work(){

System.out.println(name+" 好好上班!!");

}

}

 

 

class Demo3 

{

public static void main(String[] args) 

{

Emp e = new Emp(110,"狗娃",18);

System.out.println("编号: "+ e.id+" 姓名:"+ e.name+" 年龄:"+ e.age);

}

}

0 0