java 构造 super_Java中的构造方法this、super的用法详解
1、构造方法
定义:与类同名没有返回值的方法称为构造方法;
public class test1 {
private String name;
private int age;
public test1(){
}
}
上面的test1()是默认构造方法,即使没有定义java虚拟机在运行的时候也会自动生成,
当然如果定义了重载的构造方法便不会自动生成;
构造方法的作用有两点1.通过构造方法建立一个对象;2.通过构造方法可以快速的赋初值;
public class Main {
public static void main(String[] args) {
test1 t1=new test1();//new后面加上构造方法建立了一个对象
}
}
而如果类中有其它属性的话可以有构造方法的重载:
public test1(String name, int age) {
this.name = name;
this.age = age;
}
利用重载的构造方法可以很快速的给对象赋初值,特别是对于private的属性,如果用getter和setter很不方便;
public static void main(String[] args) {
test1 t1=new test1();
test1 t2=new test1("bob", 18);
System.out.println(t1);
System.out.println(t2);
}
输出结果:
test1 [name=null, age=0]
test1 [name=bob, age=18]
t1没有赋初值所有它里面的值是系统设置的初值;
t2利用有参的构造方法,直接给属性设置了初值,非常的方便,就不用setter方法来一个个设置值;
2. this
谁调用指向谁,是指向调用的对象;
举例说明:
在上面的test1 类中加上以下fly()方法:
public void fly(){
System.out.println(this.name+"会飞");//this指向调用的对象
}
在运行中调用:
public static void main(String[] args) {
test1 t1=new test1();
test1 t2=new test1("bob", 18);
t1.fly();//方法中的this指向t1
t2.fly();//方法中的this指向t2
// System.out.println(t1);
// System.out.println(t2);
}
结果如下:
null会飞
bob会飞
另外this还需要注意的一点是用在构造方法中:
public test1(String name, int age) {
this();//在运行构造方法进行属性赋值前是一定会先调用无参数的构造方法
this.name = name;
this.age = age;
}
当然构造方法调用主要看this(参数列表)看圆括号里面的参数列表和哪一个构造方法相同就执行哪一个构造方法;
2. super:指向父类,调用父类的属性和方法;
其实使用起来和this关键字差不多;
public test1(){
super();
}
上面的super(()调用的是父类的构造方法,如果没有继承父类的话,那么它的父类是指向object(所有类的超类);
使用:suiper关键字加“ . ”可以访问父类可以访问的属性和方法,一般用于区分被子类重写了的方法;
使用this(参数列表)和super(参数列表)的构造方法注意事项:
a. 只能够位于构造方法的第一行;
b. 不能同时出现在一个构造方法中;
c. 总是会先访问完父类的构造方法在访问子类里面的构造方法;
总结
以上所述是小编给大家介绍的Java中的构造方法this、super的用法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对聚米学院网站的支持!
java 构造 super_Java中的构造方法this、super的用法详解相关推荐
- Java构造和解析Json数据的两种方法详解一
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...
- java return返回值_java中关于return返回值的用法详解
我们输入一个条件时,系统就会对这个条件进行判断,然后给出一个返回时的结论,我们把这个结果看做是返回值.在java里可以使用return语句来进行返回,从字面意思就能很好的理解它的用法了.下面我们就re ...
- oracle中的exists 和 not exists 用法详解
from:http://blog.sina.com.cn/s/blog_601d1ce30100cyrb.html oracle中的exists 和 not exists 用法详解 (2009-05- ...
- python多个strip_python 格式化多个Python3中strip()、lstrip()、rstrip()用法详解
Python中有三个去除头尾字符.空白符的函数,它们依次为: strip: 用来去除头尾字符.空白符(包括n.r.t.' ',即:换行.回车.制表符.空格) lstrip:用来去除开头字符.空白符(包 ...
- linux cp -r 参数,Linux系统中cp命令的参数及用法详解
Linux系统中cp命令主要是用来复制文件或者目录.下面由学习啦小编为大家整理了Linux系统中cp命令的参数及用法详解的相关知识,希望对大家有帮助! Linux系统中cp命令的参数及用法详解:参数说 ...
- linux 移动剪切命令,Linux中vi的复制命令的用法详解
在Linux系统中,使用VI编辑的时候经常用到的操作就是复制粘贴,那么下面由学习啦小编为大家整理了linux中vi的复制命令的用法详解的相关知识,希望对大家有帮助! Linux中vi的复制命令的用法详 ...
- python中rstrip用法_浅谈Python3中strip()、lstrip()、rstrip()用法详解
简单来说,三种方法是为了删除字符串中不同位置的指定字符.其中,strip()用于去除字符串的首尾字符,同理,lstrip()用于去除左边的字符,rstrip()用于去除右边的字符 Python中有三个 ...
- linux中替换命令详解,linux中sed命令字符串替换的用法详解
Linux系统中sed命令可以将字符串批量替换,省去了很多麻烦,下面由学习啦小编为大家整理了linux系统中sed命令字符串替换的用法详解,希望对大家有帮助! linux中sed命令字符串替换的用法详 ...
- python中isinstance怎么用_pythonisinstance函数用法详解
这篇文章主要介绍了python isinstance函数用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 isinstance() 函数来判断 ...
最新文章
- How To Open An URL In Android’s Web Browser
- 【Flask】数据的CRUD之更新和删除操作
- Android Open Accessory (AOA)
- 2017/06/23 linux软件管理构建本地源
- eclipse从入门到精通_JAVA成长之路入门学习路线
- C和汇编-----for循环
- ABAP WRITE
- MySQL 之 存储过程
- JAVA数组扁平化整合_5种方法实现数组扁平化
- SSM框架项目的pom导入包和xml配置
- 理解 Python 中的线程
- Fastjson blacklist
- CImage不失真缩放显示图片
- ART加载OAT文件的过程分析
- vblog 的 前景展望
- 搞研究的没有好下场 哈哈哈(精华在最后)
- 天津城市职业学院计算机国考没过,天津市2019年下半年全国计算机等级考试都有哪些考点可以报名?...
- 完美卸载Visual Studio2015的方法汇总
- 干货《周志华机器学习详细公式推导版》发布,南瓜书pumpkin-book
- C++ 高效位运算函数 之 __builtin_
热门文章
- adb devices 找不到夜神模拟器解决方法
- 【报告分享】2021全球职场调研中国报告:期待与忐忑,职场人的心声-普华永道.pdf(附下载链接)...
- 【干货】2021技术展望:开拓新局,掌握变局时代的技术先机-埃森哲.pdf(附下载链接)
- 【报告分享】2019年大数据行业研究报告.pdf(附下载链接)
- 不可错过!斯坦福课程3D数据的机器学习方法(Machine Learning for 3D Data)第一部分
- vue项目云服务器,vue项目云服务器
- srs流媒体服务器windows_基于SRS构建的直播平台的监控系统的搭建思路与实现方法...
- 广告流量分析之评价指标的选择(二)
- Leetcode每日一题:206.reverse-linked-list/solution(反转链表)
- 面试题简答题——数据库相关汇总