面向对象---构造函数

特点

  1. 函数名与类名相同
  2. 不用定义返回值类型
  3. 不写return语句

作用

对象一建立,就对象进行初始化。

具体使用情况

class Student {
Student(){
System.out.println("Student run");
}
}
public class StudentDemo {
public static void main(String[] args) {
Student S = new Student();
}
}

我们在以上代码的Student类中加入了与类同名的构造函数,当我们在创建对象S时,就会自动初始化运行System.out.println("Student run")这一语句,而无需手动调用函数。

程序的运行结果为:

Student run

当在堆内存中产生对象时,对象需要一个初始化动作。当一个类中有我们自己所定义的构造函数时,构造函数会帮助我们完成初始化动作,但是当类中没有构造函数时,则系统会默认给该类中加入一个空参数的构造函数。

构造函数可以重载

一个类中可以有多重名的构造函数,但是多个构造函数之间的参数不能相同。

class Student {
private String name;
private int age;
Student() {
System.out.println("name="+name+" age="+age);
}
Student(String n) {
name = n;
System.out.println("name="+name+" age="+age);
}
Student(int a,String n) {
age = a;
name = n;
System.out.println("name="+name+" age="+age);
}
}
public class StudentDemo {
public static void main(String[] args) {
Student S1 = new Student();
Student S2 = new Student("lyx");
Student S3 = new Student(19,"lyx");
}
}

运行结果:

name=null   age=0
name=lyx age=0
name=lyx age=19

在上述代码中,我们可以发现由于使用的构造函数参数不同,在创建对象时也就调用了不同的构造函数对对象进行初始化。

构造函数和一般函数的不同

  • 写法上不同。
  • 运行上也不同。构造函数在对象一建立时就运行,而一般函数是对象调用才执行。
  • 一个对象建立,构造函数只运行一次,而一般函数可以被对象调用多次。

相应地,一个类中即使有构造函数对对象进行初始化,仍然需要提供公共方法对其访问以便于进行修改和读取。

Java学习笔记(二) 面向对象---构造函数的更多相关文章

  1. Java学习笔记之---面向对象

    Java学习笔记之---面向对象 (一)封装 (1)封装的优点 良好的封装能够减少耦合. 类内部的结构可以自由修改. 可以对成员变量进行更精确的控制. 隐藏信息,实现细节. (2)实现封装的步骤 1. ...

  2. Java学习笔记之面向对象、static关键字

    一周Java学习总结 今天就总结理清一下关于面向对象和面向过程的程序设计的一些不同特点,以及讲下static关键字. 面向对象 现在接触的Java是面向对象的,现在的程序开发几乎都是以面向对象为基础的 ...

  3. Java 学习笔记(4)——面向对象

    现在一般的语言都支持面向对象,而java更是将其做到很过分的地步,java是强制使用面向对象的写法,简单的写一个Hello Word都必须使用面向对象,这也是当初我很反感它的一点,当然现在也是很不喜欢 ...

  4. 【原】Java学习笔记015 - 面向对象

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // 传递 值类型参数 ...

  5. Java学习笔记二十九:一个Java面向对象的小练习

    一个Java面向对象的小练习 一:项目需求与解决思路: 学习了这么长时间的面向对象,我们只是对面向对象有了一个简单的认识,我们现在来做一个小练习,这个例子可以使大家更好的掌握面向对象的特性: 1.人类 ...

  6. Java学习笔记二十五:Java面向对象的三大特性之多态

    Java面向对象的三大特性之多态 一:什么是多态: 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操作. 多态性是对象多种表现形式的体现. 现实中,比 ...

  7. Java学习笔记二十一:Java面向对象的三大特性之继承

    Java面向对象的三大特性之继承 一:继承的概念: 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方 ...

  8. Java基础学习笔记(二) - 面向对象基础

    面向对象 一.面向对象概述 面向对象思想就是在计算机程序设计过程中,参照现实事物,将事物的属性特征.行为特征抽象出来,描述成计算机时间的设计思想.面向对象思想区别于面向过程思想,强调的是通过调用对象的 ...

  9. 疯狂java学习笔记之面向对象(二) - 成员变量与局部变量

    Java变量按其作用域可分为:成员变量和局部变量.注意:在Java中是没有全局变量这个概念的 一.成员变量: 成员变量是在类中定义的变量,具体可分为类变量与实例变量--有无static修饰 实例变量的 ...

随机推荐

  1. webpack 命令

    --content-base <file/directory/url/port>:内容的路径. --quiet: 在控制台不输出任何内容 --no-info: 抑制无聊的信息 --colo ...

  2. nginx负载均衡的几种模式

    nginx 的 upstream目前支持 4 种方式的分配 ).轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除. ).weight 指定轮询几率,we ...

  3. Android APP开发内容图片不显示

    I/Glide: Root cause (1 of 1) Cause (1 of 1): class java.io.FileNotFoundException: No content provide ...

  4. Flutter TextField设置默认值默认值和光标位置

    主要通过controller 实现,具体代码如下 TextField( //输入键盘类型 keyboardType: TextInputType.text, autofocus: true, deco ...

  5. C\C++串口通信编程的一点技术记录

    新工作接的第一个活,要写一个配合设备调试的上位机程序. 除了MFC界面的部分,就是要处理几条命令. 串口通信部分代码借鉴的是这一篇文章:http://blog.sina.com.cn/s/blog_a ...

  6. .NetCore集成Dapr踩坑经历

    该篇内容由个人博客点击跳转同步更新!转载请注明出处 前言 之前自己有个core2.2的项目一直是用的Surging作为微服务框架的,后来了解到了Dapr,发现比较轻量级,开发部署等也非常方便,故将自己 ...

  7. 最长公共前缀 leetcode 14

    方法一(纵向扫描) 解题思路 先计算出数组中最小的字符串长度,这样就避免了越界的情况,思路更加明确,但同时时间复杂度就相应的上升了. 先计算所有字符串在同一列上的字符是否相同,然后依次向后延伸. 代码 ...

  8. 《面试宝典》 2019年springboot面试高频题(java)

    前言 2019年已经成为了过去,借此机会想好好总结一下2019年项目研发的成效,看看在项目从无到有,都经历了那些变化?取得了哪些成果?踩过哪些坑?一个人.一个研发团队要想有质的飞跃,必须善于反思过去, ...

  9. k8s的简介以及搭建

    一:简介 1.什么是k8s? k8s是一个docker容器管理工具 它是一个全新的基于容器技术的分布式架构领先方案,是开源的容器集群管理系统. 在docker的基础上,为容器化的应用提供部署运行,资源 ...

  10. FTP服务器红帽5.4搭建图文教程!!!

    FTP服务器搭建 服务器的环境 红帽5.4 vm15 挂载光盘 mount mount -t iso9660 设备目录 /mnt 表示挂载 软件包安装 FTP服务器安装包命令: rpm -ivh /m ...