Java关键字介绍之this与super

转载 2016年06月01日 09:13:16
1.什么是super?什么是this
super关键字表示超(父)类的意思。this变量代表对象本身。
2.使用super&this调用成员变量和方法
可以使用super访问父类被子类隐藏的变量或覆盖的方法。当前类如果是从超类继承而来的,当调用super.XX()就是调用基类版本的XX()方法。见示例1。
当类中有两个同名变量,一个属于类(类的成员变量),而另一个属于某个特定的方法(方法中的局部变量),使用this区分成员变量和局部变量。见示例2。
 
示例1
class Person {
    protectedvoid print() {
       System.out.println("The print() in class Person.");
    }
}
 
publicclass DemoSuper extends Person {
    publicvoid print() {
       System.out.println("The print() in class DemoSuper.");
       super.print();// 调用父类的方法
    }
 
    publicstaticvoid main(String[] args) {
       DemoSuper ds = new DemoSuper();
       ds.print();
    }
}
 
结果:
The print() in class DemoSuper.
The print() in class Person.
 
示例2
publicclass DemoThis {
    private String name;
 
    publicvoid setName(String name) {
       this.name = name;// 前一个nameprivate name;后一个namesetName中的参数。
    }
}
3.使用this表示当前调用方法的对象引用
假设你希望在方法的内部获得对当前对象的引用,可使用关键字this。this关键字只能在方法内部使用,表示对“调用方法的那个对象”的引用。见示例3。
 
示例3
Button bn;
bn.addActionListener(this);
4.使用super&this调用构造子
super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句)。见示例4。
this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句)。 见示例5。
 
示例4
class Person {
    publicstaticvoid prt(String s) {
       System.out.println(s);
    }
 
    Person() {
       prt("A Person.");
    }
 
    Person(String name) {
       prt("A person name is:" + name);
    }
}
 
publicclass Chinese extends Person {
    Chinese() {
       super();// 调用父类构造函数。
       prt("A chinese.");
    }
 
    Chinese(String name) {
       super(name);// 调用父类具有相同形参的构造函数。
       prt("his name is:" + name);
    }
 
    publicstaticvoid main(String[] args) {
       Chinese cn = new Chinese();
       cn = new Chinese("kevin");
    }
}
 
结果:
A Person.
A chinese.
A person name is:kevin
his name is:kevin
 
示例5
Point(int a,int b){
    x=a;
    y=b;
}
Point(){
    this(1,1); //调用point(1,1),必须是第一条语句。
}
5.使用super&this应该注意些什么?
1)调用super()必须写在子类构造方法的第一行,否则编译不通过。每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。
 
2)super()和this()类似,区别是,super从子类中调用父类的构造方法,this()在同一类内调用其它方法。
 
3)super()和this()均需放在构造方法内第一行。
 
4)尽管可以用this调用一个构造器,但却不能调用两个。
 
5)this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过。
 
6)this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块。
 
7)从本质上讲,this是一个指向本对象的指针, 然而super是一个Java关键字。


本文出自 “子 孑” 博客,http://zhangjunhd.blog.51cto.com/113473/20531

Java super关键字详解

一.super关键字作用 1:主要存在于子类方法中,用于指向子类对象中父类对象。 2:访问父类的属性 3:访问父类的函数 4:访问父类的构造函数 二.super注意的地方 this和super很像...
  • qq_33642117
  • qq_33642117
  • 2016年07月15日 17:14
  • 2746

java中super关键字小结

在学习Java继承的相关的知识的时候,我们会遇到子类父类之间的继承关系,遇得到麻烦的向上塑形和向下塑形,自此总结一下,子父类继承关系中的super关键字的用法:...
  • u010571874
  • u010571874
  • 2015年08月16日 21:07
  • 756

Java super关键字用法

分别介绍了在构造方法和非构造方法中super关键字的四种不同的用法。
  • ccpat
  • ccpat
  • 2015年03月20日 14:02
  • 1830

(第16讲)this、super、final、static关键字区别

第十六讲 1、this关键字 1.1 概念以及使用范围     当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是this,代表当前对象。...
  • weiyastory
  • weiyastory
  • 2016年04月19日 20:56
  • 390

Java学习记录(五)super关键字的用法

Java中super关键字的两种用途分析
  • wuwenhui_2
  • wuwenhui_2
  • 2015年01月30日 17:37
  • 488

Java的关键字还有this和super的用法

一般会从下面几个方面考,不管是面试C++,C#,java都是 首先是关于关键字和标示常量的考察 然后是关于类和接口的试题 然后是关于array,io和socket的试题 然后是关于数据库的各种...
  • xpp1993
  • xpp1993
  • 2013年08月11日 11:07
  • 1602

java,this放在第一行,不能和super同时使用

class A { int year, month, day; public A() { this(2016, 4, 5);//This调用本类的其他构造函数,必须写在第一行 ...
  • u010002184
  • u010002184
  • 2016年04月09日 11:08
  • 2290

Java中this与super关键字

关键字--this     1、this是什么?     在Java中,this关键字的作用和其词义很接近.  它在方法内部使用,即这个方法所属对象的引用;     它在构造器内部使用,表示该构...
  • u014285482
  • u014285482
  • 2015年01月02日 23:20
  • 852

继承(包括super关键字)

一.继承的语法和基本概念 1.语法格式:class Person { public Person() { } }class Man extends Person { publi...
  • zhuguangzhou
  • zhuguangzhou
  • 2016年08月19日 22:46
  • 578

Java关键字介绍之this与super

总结关键字this与super用法。 author: ZJ 07-3-12 Blog: [url]http://zhangjunhd.blog.51cto.com/[/url] 1.什么是sup...
  • dingxinyao
  • dingxinyao
  • 2017年02月27日 16:54
  • 49
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java关键字介绍之this与super
举报原因:
原因补充:

(最多只允许输入30个字)