Java之构造方法及this、super关键字
有关构造方法的理解:
需要对对象的数据进行初始化,则创建一个构造方法,此方法名字和类名一样,但是没有返回值(类型和具体的值都没,但是可以写return;).构造方法是用来创建对象的,所以是不能被对象调用的,当创建(new)对象的时候,就被调用了一次。若我们没写构造方法(不管是无参的还是有参的)时,系统会默认的自动给添加个无参数的构造方法。多个构造方法是可以重载共存的,若构造方法私有(private)了的话,其他程序是无法创建该类的对象。
当在一个类中既存在构造方法,又存在普通方法时,需要调用构造方法(本类)时,则需要用this调用,尤其注意的是调用的语句需要写在第一行(因为构造方法就是对数据的初始化的,初始化的动作要最先执行)。
当子类需要调用父类的构造方法时,需要用到super()关键字,其实因JAVA中最大的父类是Object!!在每个类的构造方法的第一行都默认的存在隐式的super()语句的,但当子类同时需要调用本类的构造方法时,则必须将this()先执行,然后再在本类的方法中间接的super()完成初始化-----还是因为初始化的动作要先执行。
一、构造方法:
1、介绍:
修饰符 构造方法名(参数列表)
{
}
①、构造方法没有返回值类型, 也不需要写返回值。因为它是为构建对象的,对象创建完,方法就执行结束。
②、 构造方法名称必须和类名保持一致。
③、构造方法没有具体的返回值。
2、构造方法是专门用来创建对象的,也就是在new对象时要调用构造方法。
3、如果没有显示指定构造方法,编译会在编译时自动添加默认的构造方法(空参构造)!如果在描述类时,我们显示指定了构造方法,那么,当在编译Java源文件时,编译器就不会再给class文件中添加默认构造方法。
4、细节:
①、一个类中可以有多个构造方法,多个构造方法是以重载的形式存在的;
②、构造方法是可以被private修饰的,作用:其他程序无法创建该类的对象。
class Person {
private int age;
private String name; // 私有无参数的构造方法,即外界不能通过new Person();语句创建本类对象
private Person() {
}
5、构造方法与普通方法的区别:
①、构造方法在对象创建时就执行了,而且只执行一次;
②、一般方法是在对象创建后,需要使用时才被对象调用,并可以被多次调用。
6、构造方法仍需要相应的set和get方法,因为对象在创建之后需要修改和访问相应的属性值时,在这时只能通过set或者get方法来操作。
二、this关键字:
1、构造方法之间的调用,可以通过this关键字来完成。只能在本类中构造方法里用,也只能调用构造方法。不能用在普通方法。
this(参数列表);
2、调用其他构造方法的语句必须定义在构造方法的第一行,原因是初始化动作要最先执行。
3、可以在成员变量名前面加上this.来区别成员变量和局部变量。
三、super关键字:
1、在创建子类对象时,父类的构造方法会先执行,因为子类中所有构造方法的第一行有默认的隐式super();语句。
2、当子类调用父类的构造方法时,用super();
3、this调用了本类其他构造方法,那么super调用父类的语句没有的,因为初始化动作要先执行。主要在构造方法中直接或者间接的调用super()就可以完成初始化。(在开始的位置写本类的,在后面的方法中的调父类的)。
4、Java体系在设计,定义了一个所有对象的父类Object。
Java之构造方法及this、super关键字的更多相关文章
- JAVA继承时this和super关键字
JAVA继承时this和super关键字 本文主要讨论在方法前使用this或super关键字时,编译器在什么地方查找对应的函数. 在子类中指定this关键字.首先在本类中查找,如果本类中找不到,再在父 ...
- java学习笔记-继承中super关键字
背景: 在java继承的概念中我们得知,被声明为私有的类成员对所属的类来说仍然是私有的.类之外的任何代码都不能访问,包括子类. super关键字的两种用法: 1.用于调用超类的构造函数: 2.用于访问 ...
- java中构造方法和方法super/this超类与子类中初始化顺序
java中构造方法和方法全面解析 我相信大多说人都对构造方法.方法不陌生,而且很了解,但我也相信有很多像我这样的没有一个很好很清晰很全面的认识,今天就把它整理如下,希望能给大家带来点方便与帮助,也希望 ...
- Java基础之this和super关键字用法
this 在java中,this是一个引用当前类对象的引用变量,主要有以下几种用法: 引用当前类的实例变量· this关键字可以用来引用当前类的实例变量.如果实例变量和某个方法的参数之间存在歧义(实例 ...
- Java面向对象-Java类的继承及super关键字
Java面向对象-Java类的继承 1,继承定义以及基本使用 定义:子类能够继承父类的属性和方法: 注意点:Java中只支持单继承: 私有方法不能继承: 上代码: package com.java12 ...
- Java: 类继承中 super关键字
super 关键字的作用有两个: 1)在子类中调用超类的构造器,完成实例域参数的初始化,调用构造器的语句只能作为另一个构造器(通常指的是子类构造器)的第一条语句出现, 2)在子类中调用超类的方法,如: ...
- Java基础系列--this、super关键字
原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/8483623.html 一.概述 Java中this有两种用途,一种是用于指代当前对象,一种 ...
- Java中this和super关键字
今天练习到Java中的this和super关键字,我有如下总结: 1.子类继承父类,子类初始化对象,必须先调用父类构造方法,因为随时有可能要使用父类的成员变量. 2.get和set方法只是对成员变量进 ...
- Java——super关键字
2.3 super关键字 ①super不是引用类型,super中存储的不是内存地址,super指向的不是父类对象. ②super代表的是当前子类对象中的父类型特征. ③什么时候使用super? 类和父 ...
- java继承中关于super关键字和this关键字的使用
1.super关键字 由于子类不能继承父类的构造方法,因此,如果要调用父类的构造方法,可以使用 super 关键字.super 可以用来访问父类的构造方法.普通方法和属性.super 关键字的功能: ...
随机推荐
- CISCO-端口安全
1.MAC地址与端口绑定,当发现主机的MAC地址与交换机上指定的MAC地址不同时 ,交换机相应的端口将down掉.当给端口指定MAC地址时,端口模式必须为access或者Trunk状况. 3550-1 ...
- Linux-正则表达式与三剑客
1 固化命令文件 登录时执行文件的顺序 /etc/profile /etc/profile.d ~/.bash_profile ~/.bashrc /etc/bashrc 非登录shell ~/.ba ...
- Linux 下Input系统应用编程实战
作者:杨源鑫(也是我们的校园代理) 经授权转载于公众号嵌入式开发圈,有些许修改. 什么是input子系统?不管是什么操作系统,都有一个程序用于管理各种输入设备,哪些是输入设备?比如,电脑键盘.鼠标,智 ...
- 网页中控制ActiveX插件高度
说明:IE窗口中承载了一个ActiveX插件,试图使该插件充填窗口(自适应窗口的高度.宽度),且不出滚动条. 承载插件的代码如下: <body> <form id=" ...
- Android开发--Activity
一:Activity生命周期 (1)Activity生命周期中的几种方法: protected void onCreate(Bundle savedInstanceState): protected ...
- JSP页面无法识别EL表达式
昨天一直纠结一个问题,JSP页面无法获取${user}的值,一直显示的是${user},今天解决了,原来是JSP页面无法识别EL表达式. 我的web.xml的声明如下: <!DOCTYPE we ...
- set和multiset容器
set和multiset容器的能力 set 和multiset容器的内部结构通常由平衡二叉树(balanced binary tree)来实现.当元素放入容器中时,会按照一定的排序法则自动排序,默认是 ...
- jsoup解析xml某片段的问题
参考: http://blog.csdn.net/qy20115549/article/details/53556928 <tr> <td class='center'> &l ...
- python如何实现相对导入
如果python中导入的package或module不在环境变量PATH中,可以使用sys.path将要导入的package或module加入到PATH环境变量中,之后便能使用相对导入方法. 拿hom ...
- iOS QQ 登录
QQSDK 看官网的文档,确实让人头疼的一件事,说是两个资源文件,就找到了一个(TencentOpenAPI.framework),Demo中也没有找到. 接下来具体实现: 导入库: 添加SDK依赖的 ...