黑马程序员技术交流社区
标题:
举例解释this与super,让你一目了然
[打印本页]
作者:
黄玉昆
时间:
2013-3-27 10:46
标题:
举例解释this与super,让你一目了然
我想一些同学对this和super还有些不理解,我这里通过例子来给大家说明几点问题:
package cn.conpany.test.object;
public class Demo {
/**
* @param args
*/
public static void main(String[] args) {
SonClass s = new SonClass();
System.out.println("输入1的结果:" + s.add(1));
System.out.println("输入2的结果:" + s.add(2));
System.out.println("输入3的结果:" + s.add(3));
System.out.println("输入4的结果:" + s.add(4));
System.out.println("输入5的结果:" + s.add(5));
}
}
class FatherClass{
//定义成员
private int value1 = 12;
public int value2 = 7;
//父类构造函数
public FatherClass() {}
}
class SonClass extends FatherClass {
//定义子类成员
private int value1 = 5;
public int value2 = 15;
public int value = 20;
public SonClass(){}
//定义子类方法,验证this与super用法
public int add(int value){
if(value==1)
//value为传入值与父类公有成员相加
return value + super.value2;
else if(value==2)
//value1为子类私有值与父类公有成员相加
return this.value1 + super.value2;
else if(value==3)
//value2为子类公有值与传入值相加
return value2 + value;
else if(value==4){
//传入值和子类共有成员相加
return value + this.value;
}
else
//子类与父类公有成员相加
return this.value2 + super.value2;
}
}
复制代码
大家可以自己运行一下,就知道结果了,我把结果放在下面,希望想了解的人最好自己运行一下。
为什么会出现这种情况呢?
1、当子类继承父类,那么会得到父类中除了默认权限(defaulted)外的所有成员(也包括私有,但是只是继承了并不能访问,私有只有类内部可访问),那么,如果要访问父类的,就需要加super。
2、其中的this,代表的是当前的对象,如上面的例子,不是你传入的value,而是s这个对象自身有value,你必须加上this才表示当前的对象自己的值,如上面value==4的情况
作者:
黄诗宾
时间:
2013-3-27 12:34
顶一个 老黄总是分享一些非常有用的东西
作者:
曹春贵
时间:
2013-3-27 12:42
顶一个{:soso_e113:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2