构造方法详解

构造器也叫做构造方法(constructor),用于对象的初始化。

class Person2 {

String name;

int age;

public Person2(String name,int age){

this.name = name;

this.age = age;

}

要点:

1、要通过new关键字调用

2、构造器虽然有返回值,但是不能定义返回值类型(返回值的类型肯定是本类),不能在构造器里面使用return返回某个值

3、如果我们没有定义构造器,则编译器会自动定义一个无参的构造函数。如果已经定义则编译器不会自动添加

4、构造器的方法名必须和类名一致

5、可以通过方法的重载来实现不同的构造方法。

方法的重载: 相同名称,相同返回值的方法,当其参数类型、数量、顺序不一致时就会发生方法的重载。当我们调用方法时,可以根据有目的性地传入固定的参数来实现所需要的方法功能。

对象创建的过程和this的本质

创建一个对象分为如下四步:

1、分配对象空间,并将对象成员变量初始化为0或者空

2、执行属性值的显式初始化

3、执行构造方法

4、返回对象的地址给相关变量

this的本质就是“创建好的对象的地址”。由于在构造方法调用前,对象已经创建。因此,在构造方法中也可以使用this代表“当前对象”。

可以在构造器里面调用另外一个构造器

this不能用于static方法中

static关键字和final关键字

static关键字

1、修饰成员变量(静态成员变量)

在类中,用static声明的成员变量为静态成员变量,也称为类变量。类变量的生命周期和类相同,在整个应用程序执行期间都有效。

static修饰的成员变量和方法,从属于类。普通变量和方法从属于对象。

当我们在类中定义了一个静态成员变量之后,这个静态成员变量是从属于类的。也就是用此类创建的所有对象都共享一模一样的静态成员变量值,当我们对其进行修改的时候,所有对象的相关属性都会被修改。

2、修饰成员方法(静态成员方法)

static修饰成员方法可以使得我们使用形如:“类名.方法名”的操作方法,避免了必须先new出对象的资源损耗和繁琐的步骤。静态方法调用类里面的成员变量或者静态成员方法,因为静态方法是从属于类的,而普通的成员变量和成员方法从属于对象。调用时会出现不知道认哪个对象的变量、方法的问题。

3、静态块

当我们初始化static修饰的成员时,可以将它们统一放在一个以static开头,用花括号括起来的块状语句中。

4、静态导包

Import static…*

采用static导入包后,在不与当前类的方法名冲突的情况下,不需要采用“类名.方法名”的方法去调用静态方法了,可以直接采用“方法名”去调用静态方法,就好像该类自己的方法一样使用即可。

final关键字

final关键字可以用来修饰类、方法和变量。

1、修饰类

当用final修饰一个类时,表明这个类不崩被继承。

2、修饰方法

使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升。在最近的Java版本中,不需要使用final方法进行这些优化了。

(类的private方法会隐式地被指定为final方法)

3、修饰变量

对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。

最新文章

  1. Centos 安装配置gerrit
  2. C++链表
  3. MD5加密代码
  4. Oracle11g的安装方法
  5. 论httpclient上传带参数【commons-httpclient和apache httpclient区别】
  6. SQL Server 2008 R2——VC++ ADO 操作 存储过程
  7. Android(java)学习笔记94:关于广播接收者的注册和使用心得
  8. QT UI 使一个QWidget里面的元素自动填充满本QWidget
  9. UVA 10277 Boastin' Red Socks
  10. CentOS7脱机安装SQL Server 2017
  11. ArgumentError:Error #2004:某个参数无效
  12. codevs 3342 绿色通道
  13. apache 负载测试工具 ab
  14. JVM学习01:内存结构
  15. Go语言结构
  16. date_default_timezone_set()问题解决方案(PHP5.3以上的)
  17. HTML span标签:用来组合文档中的行内元素
  18. HashMap的实现原理,以及在JDK1.7和1.8的区别
  19. cxf动态调用外部web service 报告异常java.lang.NoSuchFieldErr
  20. Android开发(七)——判断网络状态

热门文章

  1. jforum(1)--环境搭建
  2. CF1059D Nature Reserve
  3. linux18.04下安装的jdk11.0.2
  4. Null component Catalina
  5. Pandas系列(六)-时间序列详解
  6. 验证性控件的使用--验证两个文本框至少有一个不为空CustomValidator
  7. Entity Framework入门教程(19)---EF中使用事务
  8. SpringBoot系列: Web应用鉴权思路
  9. [Luogu P1144]最短路计数
  10. [再寄小读者之数学篇](2014-06-22 函数恒为零的一个充分条件 [中国科学技术大学2011年高等数学B考研试题])