Java编程中this关键字与super关键字的使用方法
this
总要有个事物来代表类的当前对象,就像C++中的this指针一样,Java中的this关键字就是代表当前对象的引用。
它有三个主要的作用:
1、在构造方法中调用其他构造方法。
比如有一个Student类,有三个构造函数,某一个构造函数中调用另外构造函数,就要用到this(),而直接使用Student()是不可以的。
2、返回当前对象的引用。
3、区分成员变量名和参数名。
看下面的例子:
public class Student { private String name; private int age; private String college; public Student() { age = 20; } public Student(String name) { this();//can not be call Student,only use this() method. = name; tln("this student name is "+name); } public Student(String name,String college) { this(name);//C++中可以直接用Student(name)调用其他构造函数 ege = college; tln("this student name is "+name+" college is "+college); } public Student upgrade() { age++; return this; } public void print() { tln("name is: "+name +" age is: "+age +" college is: "+college); } public static void main(String[] args) { Student student1 = new Student("linc"); Student student2 = new Student("linc","shenyang college"); ade()t(); } }
迷失在茫茫的对象海洋时,不要忘了用this来找到自我。
super
super是this的父辈。从面相对象的角度说,这两个概念是很好理解的。
子类从父类继承过来,父类的protected及以上的'属性和方法在子类中是天生就具有的。那么,为什么还要有super这个关键字?
第一、看父类的构造
子类构造时要先调用父类的默认构造函数的,这与C++的构造属性一致。当父类有多个构造函数时,你需要指定调用哪个。这是就需要使用super(arg1,arg2...)。
需要注意的是,在子类的构造函数中调用基类的构造函数时,必须要把super写作最前面,否则报错。
第二,在子类覆盖父类的一些方法中再调用父类的此方法。大家都知道,在子类中覆盖父类的一些方法是面向对象中多态的一种方式,而因为其他种种原因,需要在此方法中调用父类的此方法,用以区分,此时需要使用super来完成。
public class ClassLeader extends Student { private String duty; public ClassLeader() { duty = "class monitor"; } public ClassLeader(String duty,String name,String college) { super(name,college); = duty; } public void print() { t(); tln("duty is " + duty); } public static void main(String[] args) { ClassLeader leader = new ClassLeader("life","linc","shenyang"); t(); } }
将两个类文件放在同一个目录,编译并运行:
D:workspaceJavaproject261super>javac -d . *java D:workspaceJavaproject261super>java ClassLeader
运行结果:
this student name is linc this student name is linc college is shenyang name is: linc age is: 20 college is: shenyang duty is life
看看在其他语言中是怎样来处理的:
C#中提供了base关键字来完成super相似的功能,C++直接用基类的名字来调用。
-
Java发展史之Java的由来
Java发展史之Java的由来Java:由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。Java语言是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由当时任职太阳微系统的詹姆斯·高斯林(JamesGosling)等人于1990年代初开发,它最初被命名为...
-
Java工程师是做什么的
Java工程师职位描述提要:精通Java/J2EE编程,能熟练使用SpringMVC、hibernate、框架进行项目开发,熟练使用freemarker等前端模板语言。Java工程师职位描述:1、负责产品功能开发;2、遵循公司技术标准、规范,高质量完成设计、开发任务;3、参与研发部门技术积累、技术难题...
-
Java中final关键字用法的讲解
1.finalvariablefinalvariable就是一个常量,一旦被初始化就不可以被改变。classTest1{finaldoublePI=3.14;//常量的名称最好大写publicTest1(){PI=3.14;}voidtest(){tln("PIis:"+PI);}publicstaticvoidmain(String[]args){Test1t=newTest1();();}}输出:PIis:3.14...
-
Java基本元素详解
生活呆以是甜的,也可以是苦的,但不能是没味的。你可以胜利,也可以失败,但你不能屈服,以下是小编为大家搜索整理了Java基本元素详解,希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕业生考试网!第二章基本元素第一章总结:一平台&JDK&JRE&JVM&A...