Java基础-3 构造函数

java-3.jpg

构造函数:

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

构造函数的格式:

修饰符  函数名(形式参数列表){
    初始化的语句;
}

构造函数要注意的细节:
1. 构造函数是没有返回值类型的。
2. 构造函数的函数名必须 与类名一致。
3. 构造函数并不是由我们手动调用的, 构造函数是在创建对应对象的时候由jvm主动调用的(每创建一个对象就会调用一次构造函数)。
4. 如果一个类没有显式的添加一个构造函数,那么java编译器会为该类添加一个无参的构造函数。
5. 如果一个类已经显式的添加一个构造函数,那么java编译器则不会再为该类添加一个无参的构造函数。
6. 构造函数是可以以函数重载的形式存在多个的。
7. 构造函数可以以函数重载的形式存在多个。

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

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

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

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

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

javap -c -l -private  class文件

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

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

//人类
class Person{

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) 
{
    /*
    Person b1 = new Person(); //黑户
    b1.id = 110;
    b1.name= “张三”;
    System.out.println("身份证:"+ b1.id+" 姓名:"+ b1.name);
    */
    Person Baby();
    Person Baby();
    Person b2 = new Person(110,”李四”);   //白户
    System.out.println("身份证:"+ b2.id+" 姓名:"+ b2.name);

}

}

推荐阅读更多精彩内容

  • 转自:http://blog.csdn.net/jackfrued/article/details/4492194...
    王帅199207阅读 7,002评论 3 93
  • 圣诞节是情人眼里的纪念日吗?还是只是为了几个苹果。 当然,所有的节日在正辛苦追求真爱的人眼里都是很好的机会,乐意为...
    霁心阅读 84评论 0 0
  • 2017年6月13日 咖啡冥想 我的近期目标是:财富种子(还清卡债5千) 所以我的咖啡冥想是一切和金钱有关,照顾他...
    林小琬阅读 38评论 0 0
  • 很多人在小时候都玩过粘知了的游戏,然而要捉到一只蜻蜓却非常困难,其中一个重要原因是蜻蜓被称为“飞行之王”,它们那一...
    前沿深度GFU阅读 233评论 0 1
  • 说好的陪我长大,但你却闭上双眼,不再看我。即使我再你身边哭泣,你也不会替我擦眼泪,不会抱着我说女女别哭,谁欺负你了...
    君之所忆阅读 91评论 1 0