this
- 当成员变量和局部变量重名时,在方法中使用this时,表示的是该方法所在类中的成员变量。(this是当前对象自己)
- 调用本类中的非构造方法,this可省略
- 把自己当作参数传递
- 有时候,我们会用到一些内部类和匿名类,如事件处理。当在匿名类中用this时,这个this则指的是匿名类或内部类本身。这时如果我们要使用外部类的方法和变量的话,则应该加上外部类的类名
- 在构造函数中,通过this可以调用同一类中别的构造函数。值得注意的是:
1:在构造调用另一个构造函数,调用动作必须置于最起始的位置
2:不能在构造函数以外的任何函数内调用构造函数
3:在一个构造函数内只能调用一个构造函数
super
表示对某个类的父类的引用,第一钟用来访问被子类隐藏的父类成员方法或属性,前提是,只能调用子类能继承的属性和方法,private是不行的,子类无法继承父类的构造方法,只能通过super()调用。第二种是可以调用父类的构造函数。必须是子类构造方法的第一句。按继承关系,构造方法是从定向下进行调用的,如果子类没有构造方法,则它默认调用父类无参的构造方法,如果父类中没有无参数的构造方法,则将产生错误。如果子类有构造方法,那么创建子类的对象时,先执行父类的构造方法,再执行子类的构造方法。如果子类有构造方法,但子类的构造方法中没有super关键字,则相同默认执行该构造方法时会产生super代码,即该构造方法会调用父类无参数的构造方法。Java语言中规定当一个类中含有一个或多个有参构造方法时,系统不提供默认的构造方法,即不含参数的构造方法,所以当父类中定义了多个有参数的构造方法时,应考虑写一个无参的构造方法,以防子类省略super关键字出现错误
----注,同意构造方法内,super()和this()方法不能同时存在,但super()方法和this.属性能同时存在,换之亦可
(一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?
答案:可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。一个文件中可以只有非public类,如果只有一个非public类,此类可以跟文件名不同。)