Java学习(构造方法、this关键字、super应用)
构 造 方 法
定义:对象创建时使用的方法,即在new一个新对象时,对应构造方法,直接对属性赋值。
语句格式: 修饰符(public 等) 构造方法名(必须跟当前类名一样,否则报错)(参数列表){
}
构造方法的体现:
(1)构造方法没有返回值类型,也不需要返回值。因为它是为成员变量赋值,赋值结束,方法随之执行结束。
(2)构造方法名称必须与类名保持一致
(3)构造方法没有具体的返回值
默认构造方法与细节:
默认构造方法:如果没有显示指定构造方法,编译会在编译时自动添加默认的构造方法,如果已经指定了构造方法,则不会再添加默认构造方法。
细节:
(1)一个类中可以有多个构造方法,多个重载方法是以重载的形式存在的。
(2)构造方法是可以被private修饰的,作用是其他类无法创建此方法的对象。
this关键词
构造方法之间的调用,可以通过this关键词来完成
构造方法调用格式:
this(参数列表);
成员变量和局部变量同名问题:
当在方法中出现了成员变量和局部变量重名的情况时,可以在成员变量前添加this.关键词来区分。
Super关键字
子父类中构造方法的调用:
在创建子类对象时,父类的构造方法会先执行,因为子类中所有构造方法的第一行有默认的隐式super();语句。
格式:
调用本类中的构造方法
this(实参列表);
调用父类中的空参数构造方法
super();
调用父类中的有参数构造方法
super(实参列表);
当父类中没有空参数构造方法时,子类的构造方法必须有显示的super语句,指定要访问的父类有参数构造方法。
子类对象创建过程的细节:
(1)只要是构造方法,第一行都有默认的super();
(2)Java中,定义了一个所有类的父类:opject
注意:
类中的构造方法默认第一行都有隐式的super()语句,在访问父类中的空参数构造方法。所以父类的构造方法既可以给自己的对象初始化,也可以给自己的子类对象初始化。
如果默认的隐式super()语句在父类中没有对应的构造方法,那么必须在构造方法中通过this或者super的形式明确要调用的构造方法。
实例:
package com.oracel.demo01;
public class Person {
private int id;
private String name;
private int age;
//系统会默认提供一个空参构造,当自己添加时会取消,若测试类中需要,需要自己手动添加
public Person(){
}
//可以存在多个构造方法,以重载的形式存在
public Person(int id){
this.id=id;
}
public Person(int id,String name,int age){
this(id); //使用this关键词,调用构造方法this.name=name; //接收参数,并且赋值
this.age=age; //使用this.关键词 来区分成员变量和局部变量
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean compare(Person p){
return this.age==p.age;
}
}
测试类:
package com.oracel.demo01;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
//构造函数只能在创建对象(new)的时候赋值一次
//构造方法是给成员变量初始化的,但系统还是先赋默认值,然后再传参
Person p=new Person(1,"寒武",18);
System.out.println(p.getId()+"..."+p.getName()+"..."+p.getAge());
}
}
Java学习(构造方法、this关键字、super应用)的更多相关文章
- Java面向对象-构造方法,this关键字
Java面向对象-构造方法,this关键字 构造方法 概念:构造方法是一个特殊的方法,这个特殊方法用于创建实例时执行初始化操作: 上代码: package com.java1234.chap03.se ...
- Java类的设计----关键字super
关键字super 在Java类中使用super来引用父类的成分 super可用于访问父类中定义的属性 super可用于调用父类中定义的成员方法 super可用于在子类构造方法中调用父类的构造方法 su ...
- java中构造方法和方法super/this超类与子类中初始化顺序
java中构造方法和方法全面解析 我相信大多说人都对构造方法.方法不陌生,而且很了解,但我也相信有很多像我这样的没有一个很好很清晰很全面的认识,今天就把它整理如下,希望能给大家带来点方便与帮助,也希望 ...
- Java学习笔记18---final关键字修饰变量、方法及类
英语里final这个单词大家都知道是"最终的"意思,其实还有一个意思是"不可更改的".在Java里,final关键字作"不可更改的"来解释更 ...
- Java学习之finally关键字总结
Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使 ...
- Java 继承extends、关键字super和this、多态、动态绑定
Manager 经理 extends Employee 雇员 "is-a"(是)关系是继承的一个明显特征.每个经理都是一名雇员. 从术语的角度讲,Manager是子类,Emplo ...
- java学习笔记-继承中super关键字
背景: 在java继承的概念中我们得知,被声明为私有的类成员对所属的类来说仍然是私有的.类之外的任何代码都不能访问,包括子类. super关键字的两种用法: 1.用于调用超类的构造函数: 2.用于访问 ...
- Java学习笔记---继承和super的用法
自从换了个视频教学,感觉比原来那个好多了,就是学校网速太渣,好多视频看一会卡半天,只能先看看已经下载的了. 不过也好,虽然不能从开始开始重新开,但是已经看过一次,在看一次也是好的,就当巩固学习了. 继 ...
- Java学习之this关键字的使用
•区分成员变量和局部变量 public class Person { String name; int age; public void set(String name,int age) { this ...
- javasE学习笔记:关键字super的使用
/* super 的作用: 1 . super可以在子类中引用父类的成员,通过 .的方式和属性.this相对应. 2. 在子类的构造方法中可以可使用super(参数列表)语句调用父类的构造方法 3. ...
随机推荐
- 用dtree实现树形菜单 dtree使用说明
http://www.jb51.net/article/28566.htm 准备工作: 请从脚本之家http://www.jb51.net/jiaoben/31974.html下载dtree.zip文 ...
- hdu6166 Senior Pan
Senior Pan Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Tot ...
- 云巴-JavaScript API测试与实例(新)
一.云巴介绍 给大家推荐一个提供后台消息服务的服务供应商,个人用户一般是免费的,可作为开发者的后台服务提供商. 官网 专注于为需要实时数据交换的产品提供完美解决方案.支持包括 手机.Web.智能设备 ...
- 前端PHP入门-028-文件操作-掌握级别
作为刚入门我们员经常会干的意见事情是ctrl+c和ctrl+v,鼠标右键删除文件.会control+c(或右键)复制.粘贴文件以及新建文件,还可以设置文件的是否为只读文件等等 可不可以写入修改配置文件 ...
- [DeeplearningAI笔记]卷积神经网络2.9-2.10迁移学习与数据增强
4.2深度卷积网络 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.9迁移学习 迁移学习的基础知识已经介绍过,本篇博文将介绍提高的部分. 提高迁移学习的速度 可以将迁移学习模型冻结的部分看 ...
- 贪心法:K叉哈夫曼树
NOI2015荷马史诗 一部<荷马史诗>中有 n 种不同的单词,从 1 到 n 进行编号.其中第 i 种单词出现的总次数为 wi.Allison 想要用 k 进制串 si 来替换第 i 种 ...
- HDU 1452 欧拉定理
让你求$2004^x$所有因子之和,因子之和函数是积性函数$\sigma(n)=\sum_{d|n}d=\prod_{i=0}^{m}(\sum_{j=0}^{k_i}{P_i^{j}})$可用二项式 ...
- java中集合去重2
1.对集合中的自动定义的对象去重: 自定义Person类,同时复写hashCode和equals方法 package collection; public class Person { private ...
- 【CodeForces】671 C. Ultimate Weirdness of an Array
[题目]C. Ultimate Weirdness of an Array [题意]给定长度为n的正整数序列,定义一个序列的价值为max(gcd(ai,aj)),1<=i<j<=n, ...
- 使用JSON Web Token设计单点登录系统
用户认证八步走 所谓用户认证(Authentication),就是让用户登录,并且在接下来的一段时间内让用户访问网站时可以使用其账户,而不需要再次登录的机制. 小知识:可别把用户认证和用户授权(Aut ...