JAVA笔记:构造方法

简介:

 构造方法定义:

  【修饰符】 构造方法名(形参列表)

             {

                }

  【修饰符】:构造方法的上一级单元是类,所以修饰符可以public、protected(父子类访问权限)、private(本类访问权限)、默认(包访问权限)

  【没有返回类型】

  【构造方法名】:必须与类名一致

  a.一般概念

  构造方法不能够被继承,也就构造方法不能够被重写

  构造方法是特殊的方法,不能够被程序员直接调用,必须使用new关键字来调用,或者在构造方法中this(实参)调用本类构造方法,

  或者在构造方法中super(实参)调 用父类构造方法。

  b.创建对象执行过程

  首先分配内存空间,并且执行默认初始化操作(根、父、子类的顺序分配空间),此时对象已经创建成功。

  然后执行初始化代码块,在执行构造方法(根初始化代码块、根构造方法、父初始化代码块、父构造方法、子初始化代码块、子构造方法的顺序执行)。

  c.构造方法调用的规则

  首先判断子类中是否有super(必须在构造方法中第一条语句使用)调用父类构造方法,如果有,则调用super匹配的父类构造方法。

  如果没有,如果父类显式定义构造方法,则判断是否有无参构造方法,如果有,则调用父类无参构造方法。

  如果没有,则编译出错。

  如果父类没有定义构造方法,则系统自动默认一个无参构造方法,并且执行体为空。

  最后判断是否有this(必须在构造方法中第一条语句使用)调用本类构造方法,如果有,则调用this匹配的本来构造方法

  d.构造方法中使用成员变量

  如果要调用父类的成员变量,可以使用super.变量

  如果要调用本类的成员变量,可以使用this.变量

  如果要调用局部变量,可以直接使用变量

  e.构造方法中使用成员方法

  如果要调用父类的成员方法,可以使用super.方法名(实参);

  如果要调用本类的成员方法,可以使用this.方法名(实参)或者方法名(实参);

  注意点:如果父类构造方法中调用普通方法,并且此普通方法在子类中被重写,则父类构造方法中调用的普通方法为子类的普通方法,

  (也就是执行子类的普通方法),但此时子类的引用变量为null时没有进行显式初始化,所以有可能导致null指针异常(如果在

  子类普通方法中使用子类的引用变量计算)。   



最新内容请见作者的GitHub页:http://qaseven.github.io/

   

目录
相关文章
|
1月前
|
设计模式 Java
Java基础—笔记—多态、final、抽象类、接口篇
该文介绍了编程中的多态、final和抽象类、接口相关概念。多态允许子类重写父类方法,通过父类引用调用子类方法,实现解耦和提高代码灵活性,但也可能导致无法使用子类特有功能,需通过强制类型转换解决。final用于修饰不可变的类、方法或变量,防止继承、重写和多次赋值。抽象类是一种包含抽象方法的类,用于强制子类重写特定方法,实现多态,适用于模板方法设计模式,解决代码重复问题。
20 0
|
1月前
|
Java
Java基础—笔记—static篇
`static`关键字用于声明静态变量和方法,在类加载时初始化,只有一份共享内存。静态变量可通过类名或对象访问,但推荐使用类名。静态方法无`this`,不能访问实例成员,常用于工具类。静态代码块在类加载时执行一次,用于初始化静态成员。
12 0
|
1月前
|
Java API 索引
Java基础—笔记—String篇
本文介绍了Java中的`String`类、包的管理和API文档的使用。包用于分类管理Java程序,同包下类无需导包,不同包需导入。使用API时,可按类名搜索、查看包、介绍、构造器和方法。方法命名能暗示其功能,注意参数和返回值。`String`创建有两种方式:双引号创建(常量池,共享)和构造器`new`(每次新建对象)。此外,列举了`String`的常用方法,如`length()`、`charAt()`、`equals()`、`substring()`等。
16 0
|
2月前
|
算法 搜索推荐 Java
数据结构与算法(Java篇)笔记--希尔排序
数据结构与算法(Java篇)笔记--希尔排序
|
3月前
|
监控 负载均衡 Dubbo
|
1月前
|
Java API
Java基础—笔记—内部类、枚举、泛型篇
本文介绍了Java编程中的内部类、枚举和泛型概念。匿名内部类用于简化类的创建,常作为方法参数,其原理是生成一个隐含的子类。枚举用于表示有限的固定数量的值,常用于系统配置或switch语句中。泛型则用来在编译时增强类型安全性,接收特定数据类型,包括泛型类、泛型接口和泛型方法。
12 0
|
2月前
|
Java
Java8 Stream流 使用笔记
Java8 Stream流 使用笔记
28 1
|
2月前
|
Java 程序员 C#
静态构造方法解析,Java新手必看技能
静态构造方法解析,Java新手必看技能
14 0
|
2月前
|
Java C++ Python
构造方法执行过程:揭秘Java代码背后的秘密
构造方法执行过程:揭秘Java代码背后的秘密
11 0
|
2月前
|
Java
JAVA构造方法
JAVA构造方法
15 0