在Java中super和this的区别
摘要:在Java中我们会时常用到super及this的用法,现在我主要来区分一下super.和this.及superL()及this()之间的区别,来对它们的认识和了解:
1.this的用法在Java中:
①:this.:this加点指此时代表当前对象,能操作当前类里面的所有属性及方法以及父类继承而来能被访问修饰符允许的属性和方法。
super.:此时指代当前对象类的父类对象部分,不能操作到本类的属性和方法,能操作到父类的能被父类访问修饰符允许的属性和方法,只有当本类中调用被重写前的效果时使用super.的方法。
语法:this.成员名 或者 this. 方法名
例:这是this加点使用
public class DemoThis {
private String name;
private int age;
public DemoThis() {
this.print();// 你可以加上this来调用方法,
}
public DemoThis(String name, int age) {
this.name = name;
this.age = age;//这里就必须使用this加点的方法来区分,this.name就指代当前的属性name;
}
public void setName(String name) {
this.name = name; // 此处必须指明你要引用成员变量
}
public void setAge(int age) {
this.age = age;
}
public void print() {
System.out.println("Name=" + name + " Age=" + age); // 在此行中并不需要用this,
// 因为没有会导致混淆的东西
}
}
例:super加点的使用,
package com.lov.lianxiText;
public class DemoThis {//父类
private String name;
private int age;
public DemoThis() {
}
public void print() {
System.out.println("哈哈哈哈。。。。。");
}
}
package com.lov.lianxiText;
public class Demo extends DemoThis {//子类
public Demo(){
}
public void print(){
super.print();//只有这个时候用super.方法,其他我们基本用this.方法
System.out.println("嘿嘿嘿.......");
}
}
总结:有上面我们可知道,this.的使用范围要比super.的范围更大,除了上面要看重写前的效果能super,我们都是用this.的方法。
2:this()与super()
①this()和super()都是使用只能使用于构造方法中,
②this()调用本类的构造,如果括号内有形参,则是调用本类的与之相对应参的构造方法;super()调用父类指定的构造方法,
③都只能写在构造方法的第一句;
④super()可以不写,在不写的时候会默认调用父类的无参构造,
⑤this()与super()不能共存,两者只能使用一个。
在Java中super和this的区别的更多相关文章
- java中super()和this()、super和this的区别
1.super()和this()区别: super():调用父类无形参的构造方法: super(形参):调用父类中某个带形参的构造方法: this(形参):调用本类中另一种形式的构造方法: 注意:放在 ...
- Java中Set Map List 的区别
java中set map list的区别: 都是集合接口 简要说明 set --其中的值不允许重复,无序的数据结构 list --其中的值允许重复,因为其为有序的数据结构 map--成对的数据结构 ...
- Java中Comparable和Comparator接口区别分析
Java中Comparable和Comparator接口区别分析 来源:码农网 | 时间:2015-03-16 10:25:20 | 阅读数:8902 [导读] 本文要来详细分析一下Java中Comp ...
- 转:Java中abstract和interface的区别
转自:Java中abstract和interface的区别 abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java ...
- Java中堆和栈的区别(转)
栈与堆都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆. Java的堆是一个运行时数据区,类的对象从中分配空间.这些对象通过new. ...
- 转:二十一、详细解析Java中抽象类和接口的区别
转:二十一.详细解析Java中抽象类和接口的区别 http://blog.csdn.net/liujun13579/article/details/7737670 在Java语言中, abstract ...
- Java中Long与long的区别(转)
Java中Long与long的区别(转) [本文转载自:http://www.cnblogs.com/bluestorm/archive/2012/04/22/2464739.html] 转载请联系原 ...
- java中堆和堆栈的区别
java中堆和堆栈的区别(一) 1.栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆. 2. 栈的优势是,存取 ...
- Java中ArrayList与LinkedList的区别
Java中ArrayList与LinkedList的区别 一般大家都知道ArrayList和LinkedList的区别: 1. ArrayList的实现是基于数组,LinkedList的实现是基于双向 ...
随机推荐
- BZOJ2337: [HNOI2011]XOR和路径
题解: 异或操作是每一位独立的,所以我们可以考虑每一位分开做. 假设当前正在处理第k位 那令f[i]表示从i到n 为1的概率.因为不是有向无环图(绿豆蛙的归宿),所以我们要用到高斯消元. 若有边i-& ...
- 出现错误ActivityManager: Warning: Activity not started, its current task has been
1.在学习两个Activity的切换时,重新把新的工程部署上模拟器时候出现错误:ActivityManager: Warning: Activity not started, its current ...
- HDU 1213 How Many Tables (并查集,常规)
并查集基本知识看:http://blog.csdn.net/dellaserss/article/details/7724401 题意:假设一张桌子可坐无限多人,小明准备邀请一些朋友来,所有有关系的朋 ...
- Java [Leetcode 328]Odd Even Linked List
题目描述: Given a singly linked list, group all odd nodes together followed by the even nodes. Please no ...
- erlang 线上分析工具集锦
1.Recon-Erlang线上系统诊断工具(引自): Erlang系统素以稳定可靠闻名,但是它也是c实现的,也是要管理比如内存,锁等等复杂的事情,也会出现Crash,而且crash的时候大部分原因是 ...
- 【转】使用 Auto Layout 的典型痛点和技巧
layoutIfNeeded()强制立刻更新布局 原文网址:http://www.jianshu.com/p/0f031606e5f2 官方文档:Auto Layout Guide 加上去年WWDC上 ...
- Oracle 不同故障的恢复方案
之前在Blog中对RMAN 的备份和恢复做了说明,刚看了下,在恢复这块还有知识点遗漏了. 而且恢复这块很重要,如果DB 真要出了什么问题,就要掌握对应的恢复方法. 所以把DB的恢复这块单独拿出来说明一 ...
- WdatePicker的一些用法
在选择日期之后,再执行自己的另一个函数 onpicked: function () { LoadData(); } <input type="text" class=& ...
- HTTP请求中浏览器缓存
本文导读:浏览器缓存机制,其实主要就是HTTP协议定义的缓存机制.客户端缓存是否需要是可以在服务端代码上控制的.那就是响应头.响应头告诉缓存器不要保留缓存,缓存器就不会缓存相应内容:如果请求信息是需要 ...
- Android-给另一个Activity传递HashMap
I have a HashMap which I would pass to another Activity class. I simply use this code: Intent intent ...