Java构造器浅析
Java构造器
问题引出
1.先看一段简单创建对象的例子:
public class constructTest {
public static void main(String[] args) {
Index t = new Index();
t.dance();
}
} class Index{
public void dance(){
System.out.println("跳舞.....");
}
}
构造器分析
① 代码中有Index t = new Index()
这样一条语句,可能你会觉得这不就是创建对象吗?有什么好分析的…可是下面的类名是Index
,而不是Index()
,按道理来说,如果是创建对象,那我们应该写成Index t = new Index
,为什么加了括号呢?一般都是在调用方法的时候才加括号,没错,其实这里也就是类似于调用方法,只不过这里是调用类的构造器(构造器不是方法,但是类似于方法,在官方文档中,他和方法是并列的。)
②当按住Ctrl 键再点击上面的Index()的时候,就会跳转到下面的Index这里,也就说明在创建对象的时候,确实是调用下面的构造器。
③初始化信息
public class constructTest {
public static void main(String[] args) {
Index t1 = new Index();
Index t2 = new Index("小芳",1);
t1.demo();
t2.demo();
}
}
class Index{
public String name;
public int age;
public Index(){
}
public Index(String name, int age){
this.name = name;
this.age = age;
}
public void demo(){
System.out.println(name+"刚出生,今年"+age+"岁了!");
}
}
//输出结果
null刚出生,今年0岁了!
小芳刚出生,今年1岁了!
②可以这样理解,当创建一个对象的时候,就像一个小孩的出生,我们会给他取名,并且默认规定他就是一岁。而对于对象来说,也可以类似的在创建的时候默认的给他初始化一些信息。而这些操作就把他放到构造器里面去,当实例化对象的时候,构造器里的内容也被执行,那么我们需要的初始化信息也就有了。
总结构造器作用
1.创建对象
2.初始化对象的信息。
其他注意事项
1.构造器定义方法: 权限修饰符 类名 ( 形参列表){ }
2.当创建对象的时候,如果没有
显式
的写出构造器,那么系统会默认使用自带的构造器,只是这个构造器没有初始化功能,因为他也不知道你要初始化那些属性,所以一般都会显式
的对构造器进行重写。3.构造器还可以进行重载,当重载以后,创建对象的时候会根据构造器参数列表信息来选择使用哪个构造器。如果自己写了构造器,那么系统默认的构造器就不再使用!
4.构造器不能是abstract, static, final, native, strictfp, 或者synchronized修饰,原因如下:
①构造器不是通过继承得到的,所以没有必要把它声明为final的。
(被
final
修饰的变量就是常量,方法不能被重写但可以重载,类不能被继承。) ② 一个抽象的构造器将永远不会被实现,所以也不能声明为abstract的。
③构造器总是关联一个对象而被调用,所以把它声明为static是没有意义的。
④没有实际的需要把构造器定义成同步的,因为它将会在构造的时候锁住该对象,直到所有的构造器完成 它们的工作,这个构造的过程对其它线程来说,通常是不可访问的。 (synchronized)
⑤本地化的方法情况特别复杂,所以JVM调用起来非常麻烦,需要考虑很多种情况,没有native关键字的 情况下,JVM实现起来比较容易。
Java构造器浅析的更多相关文章
- scjp考试准备 - 7 - Java构造器
题目——如下代码的执行结果: class Hello{ String title; int value; public Hello(){ title += " World!"; } ...
- JAVA构造器,重载与重写
1. java构造器 构造器也叫构造方法(constructor), 用于对象初始化. 构造器是一个创建对象时被自动创建的特殊方法,目的是对象的初始化. 构造器 的名称与类的名称一致. JAVA通过n ...
- Java NIO浅析 转至 美团技术团队
出处: Java NIO浅析 NIO(Non-blocking I/O,在Java领域,也称为New I/O),是一种同步非阻塞的I/O模型,也是I/O多路复用的基础,已经被越来越多地应用到大型应用服 ...
- 浅谈Java构造器
Java构造器 每个类都有构造方法.如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法. 在创建一个对象的时候,至少要调用一个构造方法.构造方法的名称必须与类同名,一个类可以 ...
- java构造器级简单内存分析
java构造器的使用(基础篇) 构造方法也叫构造器,是创建对象时执行的特殊方法,一般用于初始化新对象的属性. 基本定义语法: 访问控制符 构造方法名([参数列表]){ 方法体 } 注:"访问 ...
- java构造器
java的构造器不是方法,因为没有返回值. 构造器可以重载. 构造器的访问说明符: private:只有本类可以使用这个构造器. protected:这个类的子类和包中的类都可以使用此构造器. pub ...
- Java构造器和方法的区别
摘要要学习Java,你必须理解构造器.因为构造器可以提供许多特殊的方法,这个对于初学者经常混淆.但是,构造器和方法又有很多重要的区别.原作者:Robert Nielsen 原站:www.javawor ...
- JAVA构造器、this、super
构造器是为了创建一个类的实例.这个过程也可以在创建一个对象的时候用到: Platypus p1 = new Platypus(); 相反,方法的作用是为了执行java代码. 修饰符,返回值和命名的不同 ...
- Java构造器的深入理解
[构造器与方法的深入理解] 构造器的深入理解 [博主]高瑞林 [博客地址]http://www.cnblogs.com/grl214 [博客地址]http://www.cnblogs.com/grl2 ...
随机推荐
- omcat配置多域名站点启动时项目重复加载多次
在tomcat中配置多个Host的时候, 出现项目重复启动多次的情况. 刚开始以为是spring boot发布项目的时候自带了一个tomcat引起的, 后来发现不是 参考了这两篇文章, 解决问题 ht ...
- 将 /u 转变为 utf-8 编码
将 /u 转变为 utf-8 编码 PHP实例: $result = {"errno":-1,"message":"\u8bbf\u95ee\u5fa ...
- Python爬虫的开始——requests库建立请求
接下来我将会用一段时间来更新python爬虫 网络爬虫大体可以分为三个步骤. 首先建立请求,爬取所需元素: 其次解析爬取信息,剔除无效数据: 最后将爬取信息进行保存: 今天就先来讲讲第一步,请求库re ...
- firefox浏览器中使用vux的x-input报错TypeError: _this3.$refs.input.scrollIntoViewIfNeeded is not a function
最近做公众号项目,想着统一风格,所以决定使用vux. 在调试时发现,只要鼠标点击x-input输入框,就会报错 TypeError: _this3.$refs.input.scrollIntoView ...
- JAVA语 言 的 特 点
Java到 底 是 一 种 什 么 样 的 语 言 呢? Java是 一 种 简 单 的 面 象 对 象 的 分 布 式 的 解 释 的 健 壮 的 安 全 的 结 构 中 立 的 可 移 植 的 性 ...
- Android的系统框架的深入认识
Android采用层次化系统架构,官方公布的标准架构如下图所示.Android由底层往上分为4个主要功能层,分别是linux内核层(Linux Kernel),系统运行时库层(Libraries和An ...
- k8s 获取 Pod ip 添加到环境变量
0x00 事件 有一个需要将 Pod 自身的 ip 地址添加到环境变量的需求,可以在 yaml 文件的 env 中这样设置: env: - name: POD_OWN_IP_ADDRESS value ...
- 3 JAVA的基本变量类型
1. 数字 整数型 类型 字节数 范围 int 4 -2^31~ 2^31-1 short 2 -2^15~ 2^15 -1 long 8 -2^63 ~ 2^63 -1 byte 1 -2^ ...
- Spring Data Jpa的四种查询方式
一.调用接口的方式 1.基本介绍 通过调用接口里的方法查询,需要我们自定义的接口继承Spring Data Jpa规定的接口 public interface UserDao extends JpaR ...
- [学习笔记] [数据分析] 01.Python入门
1.安装Python与环境配置 ① ② 安装pip以及利用pip安装Python库 2.Anaconda安装 conda list 要在root环境下 3.常用数据分析库 ① Numpy 安装:con ...