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 关键字的功能: ...
随机推荐
- hdu-5358 First One(尺取法)
题目链接: First One Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Other ...
- Python框架下django 的并发和多线程
django 的并发能力真的是令人担忧,django本身框架下只有一个线程在处理请求,任何一个请求阻塞,就会影响另一个情感求的响应,尤其是涉及到IO操作时,基于框架下开发的视图的响应并没有对应的开启多 ...
- 简单三步快速学会使用Mybatis-Generator自动生成entity实体、dao接口以及mapper映射文件(postgre使用实例)
前言: mybatis-generator是根据配置文件中我们配置的数据库连接参数自动连接到数据库并根据对应的数据库表自动的生成与之对应mapper映射(比如增删改查,选择性增删改查等等简单语句)文件 ...
- 是否要从单片机转为嵌入式Linux?
作者:嵌入式老鸟火哥 授权转载于公众号嵌入式老鸟的职场之道(ID: ict_embedded),有增加内容和修改. 最近很多童鞋投票并咨询如何从单片机转为嵌入式Linux开发.看来读者圈中做单片机,R ...
- .NETFramework:Thread
ylbtech-.NETFramework:Thread 1.返回顶部 1. #region 程序集 mscorlib, Version=2.0.0.0, Culture=neutral, Publi ...
- activeMQ:java消息机制初试(一)
前言:自打学习编程以来,就知道activeMQ这么个东西,但是仅仅限于只知其名,不闻其详.现在加入到新的项目组,项目中使用了这个.现在想重新去学习和了解.最后整合成一个完成的demo,在网上看的Dem ...
- Flutter实战视频-移动电商-07.Dio基础_POST请求的使用
07.Dio基础_POST请求的使用 越界问题解决 容器越界的问题,越界是因为键盘弹起的问题.如果键盘不弹起是不会越界 我们加一个滚动组件就可以解决. 这是技术胖视频中出现的越界的截图效果 这是我自己 ...
- Flutter实战视频-移动电商-24.Provide状态管理基础
24.Provide状态管理基础 Flutter | 状态管理特别篇 —— Provide:https://juejin.im/post/5c6d4b52f265da2dc675b407?tdsour ...
- LeetCode: 575 Distribute Candies(easy)
题目: Given an integer array with even length, where different numbers in this array represent differe ...
- IT兄弟连 JavaWeb教程 JSTL常用标签
1.条件标签 条件标签能够实现Java语言中的if语句以及if-else语句的功能,它包括以下几种: <c:if>:用于实现Java语言中的if语句的功能. <c:choose> ...