Java中的super关键字和this关键字作用介绍
一、super关键字的作用
1、子类在构造方法中显示调用父类构造方法
super可以在子类的构造方法中显示调用父类的构造方法;并且这行代码必须出现在子类构造方法的第一行。原因:因为父类构造方法没有执行之前父类的属性和方法还没有被创建,则子类不能继承父类的属性和方法,因此子类的构造方法不能被执行。
/**
* 子类:构造方法的第一行要保证显示或者隐式的调用构造方法
* @author Administrator
*
*/
public class Teacher extends Person {
//继承自父类的空构造函数
public Teacher() { }
public Teacher(String name, int age, String gender) {
//1. 出现在子类构造函数的第一行,用于调用父类的构造方法
super(name, age, gender);
}
private String course;
public void teach() {
System.out.println("教...");
} }
2.可以在子类中充当临时父类对象
可以在子类内部代表父类对象,从而在子类中访问父类的属性和方法。
class Person01 {
private String name;
private int age;
public void say() {
System.out.println("人说....");
return null;
}
public void eat() {
System.out.println("人吃....");
}
}
class Teacher01 extends Person01 {
@Override
public C say() {
System.out.println("老师在一本正经的说...");
return null;
}
//注解的作用:防止开发者误写,起到提示作用
@Override
public void eat() {
System.out.println("洗个手");
//2. super作用:super类似于父类的虚拟对象
super.eat();
System.out.println("抽根烟...");
}
}
二、this关键字的作用
1、代表当前对象
在类的内部永远代表正在执行此代码的对象;在成员方法和构造方法内部,都可以通过this来明确访问类中的成员属性和成员方法。
public class Person03 {
String name;
int age;
//构造代码块:直接在类中编写一对大括号,构造代码块可以访问到之前定义的属性
{
System.out.println("构造代码块!" + name);
} {
say(); System.out.println("构造代码块2!" + this);
} public Person03(){
System.out.println("构造方法!");
}
public Person03(String name, int age) {
//1. 指向无参构造方法
this();
//2. 代表正在执行此代码的对象
this.name = name;
this.age = age;
}
void say() {
System.out.println("成员方法说动作");
}
{
say();
System.out.println("构造代码块3!");
}
public static void main(String[] args) {
Person03 p = new Person03();
p.say();
//匿名创建对象:创建对象只会用一次并且立即使用,而不用赋值给一个引用,即为创建了一个匿名对象
new Person03().say();
}
}
2、指向某个构造方法
在构造方法内部通过this(参数列表),可以调用其他构造方法。
注意:使用这种用法时,this()必须出现在当前构方法的第一行。
三、super和this的共同点和区别
共同点:super和this都可以代表一个临时对象执行构造函数,并且都要放在构造函数的第一行;
不同点:super一般用在子类中,用于代表父类的对象;this用于当前类中,用于代表正在执行该代码的对象。
Java中的super关键字和this关键字作用介绍的更多相关文章
- Java中的Serializable接口和transient关键字
Java中的Serializable接口和transient关键字 Table of Contents 1. 向memcached中放数据时遇到NotSerializableException异常 2 ...
- 总结java中的super和this关键字
知识点: 在java类中使用super引用父类的成分,用this引用当前对象 this可以修饰属性.构造器.方法 super可以修饰属性.构造器.方法 关于子类实例化过程中的内存分配,在下一篇博客中说 ...
- JAVA中的super和this关键字的使用
一 this关键字 this关键字可以出现在构造方法和实例方法中,不能出现在静态方法中,这是因为静态方法可以用类名来调用,这时可能还没有任何对象诞生. this主要有两种用法: 1 用在构造方法中,调 ...
- java 之 继承 super关键籽 this关键字 final关键字
继承 语法: 使用 extends 来继承 class子类 extends父类{ 子类属性 子类方法 } 继承的特点: 1.子类会把父类所有的属性和方法继承下来,final修饰的类是不可以被继承 ...
- Java中的super与this解析
好了,现在开始讨论this&super这两个关键字的意义和用法. 在Java中,this通常指当前对象,super则指父类的.当你想要引用当前对象的某种东西,比如当前对象的某个方法,或当前对象 ...
- java中的super限定
super的用法: (1)如果需要在子类中调用父类中被覆盖的实例方法,可以用super限定来调用父类中被覆盖的方法.当然,也可以调用从父类继承的实例变量. public void callOverri ...
- [转]Java中继承、多态、重载和重写介绍
什么是多态?它的实现机制是什么呢?重载和重写的区别在那里?这就是这一次我们要回顾的四个十分重要的概念:继承.多态.重载和重写. 继承(inheritance) 简单的说,继承就是在一个现有类型的基础上 ...
- JAVA 中无锁的线程安全整数 AtomicInteger介绍和使用
Java 中无锁的线程安全整数 AtomicInteger,一个提供原子操作的Integer的类.在Java语言中,++i和i++操作并不是线程安全的,在使用的时候, 不可避免的会用到synchron ...
- Java中Class和单例类的作用与类成员的理解
Java中Class类的作用与深入理解 在程序运行期间,Java运行时系统始终为所有的对象维护一个被称为运行时的类型标识.这个信息跟踪着每个对象所属的类.JVM利用运行时信息选择相应的方法执行.而保存 ...
- Java中@Deprecated、@SupressWarning、@Override的作用
Annotation注解在 Java 中有着很广泛的,他是做为一种标识 为javac所识别.每一个注解 都对应这一个Java类 在java.lang包中 有三个注解 分别是 Deprecated ...
随机推荐
- PaperReading20200220
CanChen ggchen@mail.ustc.edu.cn Recently I am occupied with something else so today I am going to sh ...
- Linux系统chmod命令的含义和权限详解
许多喜欢使用chmod命令的用户,对chmod命令的含义和权限仍然不是很清楚,因此在使用的时候对它们造成了一定的麻烦.为了解决这些用户的迷惑,今天小编就和大家一起分享下chmod命令的含义和权限. 对 ...
- Python django 安装 mysqlclient 失败
使用命令安装失败: C:\Program Files (x86)\Python\Python37-\Scripts>pip3..exe install mysqlclient Collectin ...
- Day2-D-Oil Deposits-POJ-1562
The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. GeoSu ...
- Python—处理Excel表格
一.使用xlrd和xlwt这两个库来处理excel,即xlrd是读excel的库,xlwt是写excel的库 1.使用 xlrd 读取Excel数据 # -*- coding:utf-8 -*- im ...
- 七 Hibernate5种查询检索方式,单表&多表
Hibernate中提供了5种查询方式: OID查询 对象导航查询 HQL检索 QBC检索 SQL检索 OID检索: Hibernate根据对象的oid(表中主键) 使用get方法 Custome ...
- Vue项目中v-for无法渲染数据
在Vue项目中,我们想要实现下面的布局效果 后端返回的数据格式如下,可以看出产品列表五张图的数据位于同一个数组中 而我的html结构如下: 我希望直接渲染左边一张大图,然后右边的四张小图通过v-for ...
- vscode点击ctrl键报错Request textDocument/definition failed.
现象 用vscode写java代码的时候突然出现,修复问题点击Ctrl时,输出窗口就打日志,报错Request textDocument/definition failed. 我百度唯一的有用线索就是 ...
- pytorch & numpy广播法则
广播法则 所有数组向维度最高的数组看齐,若维度不足则在最前面的维度用1补齐 扩展维度后,所有数组在某一维度相同或者长度为1,否则不能计算 当可以计算时,将长度为1的维度扩展为另一数组相应维度的长度 a ...
- 微信小程序自定义组件-下拉框
这个是网址https://www.cnblogs.com/zjjDaily/p/9548433.html 微信小程序之自定义select下拉选项框组件 知识点:组件,animation,获取当前点击元 ...