Java基础(basis)-----关键字this和super的作用
1.关键字this
- 可以用来修饰属性、方法、构造器;this理解为当前对象或当前正在创建的对象
- 局部变量与成员变量同名,成员变量被屏蔽,用"this.成员变量"的方式访问成员变量
- 可以在构造器中通过“this(形参)”的方式显示的调用本类中其它重载的指定的构造器,在构造器内部必须声明在首行
package com.keyword;
/**
* this关键字
*
* @author yyx 2019年2月15日
*/
public class ThisDemo {
private String stuName;
private Integer stuAge;
private String stuSex;
public ThisDemo() {
super();
System.out.println("无参构造函数");
this.sayWord(); //this调用方法
}
public ThisDemo(String stuName, Integer stuAge) {
this(); // 调用重载的构造方法
this.stuName = stuName;
this.stuAge = stuAge;
System.out.println("两个参数的构造函数");
}
public ThisDemo(String stuName, Integer stuAge, String stuSex) {
this(stuName, stuAge); // 调用重载的构造方法
this.stuSex = stuSex;
System.out.println("三个参数的构造函数");
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public Integer getStuAge() {
return stuAge;
}
public void setStuAge(Integer stuAge) {
this.stuAge = stuAge;
}
public String getStuSex() {
return stuSex;
}
public void setStuSex(String stuSex) {
this.stuSex = stuSex;
}
@Override
public String toString() {
return "ThisDemo [stuName=" + stuName + ", stuAge=" + stuAge + ", stuSex=" + stuSex + "]";
}
public void sayWord() {
System.out.println("我会说话!");
}
public static void main(String[] args) {
ThisDemo thisDemo=new ThisDemo("张三",23,"男");
System.out.println(thisDemo.toString());
}
}
注意:this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this
2.关键字super
- 在子类构造方法中要调用父类的构造方法,用“super(参数列表)”的方式调用,参数不是必须的,该语句只能用在子类构造方法体中的第一行
- 当子类方法中的局部变量或者子类的成员变量与父类成员变量同名时,可以用“super.成员变量名”来引用父类成员变量
- 当子类的成员方法覆盖了父类的成员方法时,可以用“super.方法名(参数列表)”的方式访问父类的方法
- 在子类构造方法中用“super(参数列表)”的方式调用父类的构造方法时,在构造方法内,“this(形参列表)”或“super(形参列表)”只能出现一个!
package com.keyword;
public class SuperDemo {
public static void main(String[] args) {
Student student = new Student("李四", 23, "女", "223311");
student.sayWord();
}
}
class Person {
private String name;
private Integer age;
private String sex;
public Person() {
System.out.println("父类无参的构造方法!");
}
public Person(String name, Integer age, String sex) {
this();// 调用本类重载的构造方法
this.name = name;
this.age = age;
this.sex = sex;
System.out.println("父类有参的构造方法!");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public void sayWord() {
System.out.println("我是父类,人都会说话!");
}
}
class Student extends Person {
private String cno;
public Student(String name, int age, String sex, String cno) {
// 调用父类构造器
super(name, age, sex);
this.cno = cno;
}
public String getCno() {
return cno;
}
public void setCno(String cno) {
this.cno = cno;
}
public void sayWord() {
// 调用父类方法
super.sayWord();
System.out.println("我是子类,我也会说话!");
super.setName("本来叫李四,改名叫张三");
// 调用父类获取属性方法
System.out.println(super.getName());
}
}
Java基础(basis)-----关键字this和super的作用的更多相关文章
- Java基础(basis)-----关键字final和static的作用
1.关键字final final修饰类:这个类就不能被继承 final修饰方法:不能被重写 final修饰属性:此属性就是一个常量,一旦初始化后,不可再被赋值.习惯 ...
- Java基础(basis)-----关键字break、continue、return的区别
1.break break只能用于switch语句和循环语句中,跳出当前循环:但是如果是嵌套循环, 则只能跳出当前的这一层循环,只有逐层break才能跳出所有循环 for (int i ...
- Java基础-synchronized关键字的用法(转载)
synchronized--同步 顾名思义是用于同步互斥的作用的. 这里精简的记一下它的使用方法以及意义: 当synchronized修饰 this或者非静态方法或者是一个实例的时候,所同步的锁是加在 ...
- Java基础之关键字,标识符,变量
Java基础 首先,来看一下Java基础知识图解,以下便是在java学习中我们需要学习设计到的一些知识(当然不是很完全). 这些都是接下来在以后的学习中我们会学到的一些知识. 1 关键字 首次先来学习 ...
- java基础---->final关键字的使用
这里介绍一些java基础关于final的使用,文字说明部分摘自java语言规范.心甘情愿这四个字,透着一股卑微,但也有藏不住的勇敢. Final关键字的说明 一.关于final变量规范说明 .A fi ...
- Java基础 -- final关键字
在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们来了解一下final ...
- java基础Synchronized关键字之对象锁
java中Synchronized关键字之对象锁 当有多个线程对一个共享数据进行操作时,需要注意多线程的安全问题. 多线程的同步机制对资源进行加锁,使得在同一个时间,只有一个线程可以进行操作,同 ...
- java基础之关键字static
在java当中有很多关键字,static便是其中一个,它很普通但我们经常需要运用到它,所以要了解static是非常有必要的. 鉴于本人知识结构有限,若有错误忘不吝赐教,甚为感谢. 一. ...
- 黑马程序员——JAVA基础之final this.和super.的区别
------- android培训.java培训.期待与您交流! ---------- final关键字: final可以修饰类,方法,变量. final修饰的类不可以被继承. final修饰的方法 ...
随机推荐
- AT2134 Zigzag MST 最小生成树
正解:最小生成树 解题报告: 先放下传送门QAQ 然后这题,首先可以发现这神奇的连边方式真是令人头大,,,显然要考虑转化掉QAQ 大概看一下可以发现点对的规律是,左边++,交换位置,再仔细想下,就每个 ...
- 关于byte[]与string、Image转换
byte[]与string转换 参考网址:https://www.cnblogs.com/xskblog/p/6179689.html 1.使用System.Text.Encoding.Default ...
- maven项目里jar包显示灰色
在spring boot项目加载Junit jar包之后,发现jar的颜色是灰色的,和其它的不一样. 带着好奇问了问身边的大神,大神解释说是因为pom文件里依赖项带上了<scope>tes ...
- MySQL+InnoDB semi-consitent read原理及实现分析(转)
add by zhj: 主要讲的是在MySQL在Repeatable Read和Read Committed级别下,加锁时的不同,在Read Committed隔离级别下,只对where 中满足条件的 ...
- 让对象支持with语句
一.with语句的好处 with语句的好处在于,它可以自动帮我们释放上下文,就比如文件句柄的操作, 如果你不使用with语句操作,你要先open一个文件句柄,使用完毕后要close这个文件句柄, 而使 ...
- 帝国cms支持的变量及灵动标签变量汇总
帝国CMS对首页.列表页.内容页这三个页面模板支持的变量是不同的,有的是通用的,有的不是通用的,本文就这三个模板常用的变量列于此,另外灵动标签很好用啊,也顺便收藏于此,以备后用,到时不用到处翻来翻去的 ...
- clone git 项目到 非空目录
如果我们往一个非空的目录下 clone git 项目,就会提示错误信息: fatal: destination path '.' already exists and is not an empty ...
- iot-hub运行在虚拟上
ng build gradlew build java -jar iot-hub-0.0.1-SNAPSHOT.jar 后台运行 nohup java -jar iot-dm-0.0.1-SNAP ...
- 最短路径-并查集+Floyd[转载]
题目描述 N个城市,标号从0到N-1,M条道路,第K条道路(K从0开始)的长度为2^K,求编号为0的城市到其他城市的最短距离 输入描述: 第一行两个正整数N(2<=N<=100)M(M&l ...
- 【UML】-NO.42.EBook.5.UML.1.002-【UML 大战需求分析】- 活动图 (Activity Diagram)
1.0.0 Summary Tittle:[UML]-NO.42.EBook.1.UML.1.002-[UML 大战需求分析]- 活动图 Style:DesignPattern Series:Desi ...