006-面向对象之类的构造器(或构造方法)

声明:我的所有文章,都是对网上教学视频的整理,包括狂神说、尚硅谷、黑马程序员等等,用来作为参考资料,无任何商业使用,请广大网友参考,不喜勿喷,谢谢。(注意,由于网站的原因,有些代码字符可能会出现问题,建议大家阅读代码时,最好和下面的图片对应来看)

一、 构造器的特征

1、 它具有与类相同的名称
2、 它不声明返回值类型,与声明为void不同
3、 不能被static、final、synchronized、abstract、native修饰,不能有return语句返回值

二、 构造器的作用

创建对象,给对象进行初始化
如同我们规定每个“人”一出生就必须先洗澡,我们就可以在“人”的构造器中加入完成“洗澡”的程序代码,于是每个“人”一出生就会自动完成“洗澡”,程序就不必再在每个人刚出生时一个一个地告诉他们要“洗澡”了。

三、 语法格式

修饰符 类名(参数列表) {
初始化语句;
}
示例:
006-面向对象之类的构造器(或构造方法)
创建Animal类的实例:Animal a = new Animal();
调用构造器,将legs初始化为4。

四、 构造器的分类

根据参数不同,构造器可以分为如下两类:
1、 隐式无参构造器(系统默认提供)
2、 显式定义一个或多个构造器(无参、有参)
注意:

  • Java语言中,每个类都至少有一个构造器
  • 默认构造器的修饰符与所属类的修饰符一致
  • 一旦显式定义了构造器,则系统不再提供默认构造器
  • 一个类可以创建多个重载的构造器
  • 父类的构造器不可被子类继承
    练习:
    1、 在前面定义的Person类中添加构造器,利用构造器设置所有人的age属性初始值都为18。
    2、 修改上题中类和构造器,增加name属性,使得每次创建Person对象的同时初始化对象的age属性值和name属性值。
    006-面向对象之类的构造器(或构造方法)
    3、 编写两个类,TriAngle和TriAngleTest,其中TriAngle类中声明私有的底边长base和高height,同时声明公共方法访问私有变量。此外,提供类必要的构造器。另一个类中使用这些公共方法,计算三角形的面积。

    五、 构造器重载

    1、 构造器一般用来创建对象的同时初始化对象,如:
    006-面向对象之类的构造器(或构造方法)
    2、 构造器重载使得对象的创建更加灵活,方便创建各种不同的对象,如:
    006-面向对象之类的构造器(或构造方法)
    3、 构造器重载,参数列表必须不同
    示例:
    006-面向对象之类的构造器(或构造方法)
    练习:
    1、 定义Student类,有4个属性:String name; int age; String school; String major;
    2、 定义Studnet类的3个构造器:

  • 第一个构造器Student(String n, int a)设置类的name和age属性;
  • 第二个构造器Student(String n, int a, String s)设置类的name, age 和school属性;
  • 第三个构造器Student(String n, int a, String s, String m)设置类的name, age ,school和major属性;
    3、 在main方法中分别调用不同的构造器创建的对象,并输出其属性值。

    六、 总结:属性赋值过程

    截止到目前,我们讲到了很多位置都可以对类的属性赋值。现总结这几个位置,并指明赋值的先后顺序。
    赋值的位置:
    1、 默认初始化 2、 显式初始化 3、 构造器中初始化 4、 通过“对象.属性“或“对象.方法”的方式赋值
    赋值的先后顺序:1-2-3-4

猜你喜欢

转载自blog.51cto.com/12859164/2546352