黑马程序员技术交流社区

标题: super和this关键字 [打印本页]

作者: foreverfun    时间: 2015-9-19 21:01
标题: super和this关键字
super关键字到底是什么,怎么去理解呢?this关键字代表本类对象的引用,可以用打印语句打印出地址值,与它所对应的对象地址值是一样的,那么,可以将super打印吗?打印出来的是什么东西?还有就是this可以调用父类的一般方法,这句话是正确的吗?
作者: 残影    时间: 2015-9-19 21:48
super就是父类引用对象,,,调用方法和this一样。 this不可以调用父类,如果要用父类就用super,只能super。
作者: 安仔    时间: 2015-9-19 21:52
this的作用执行的是创建此对象的类的成员,super指向的是父类所在的空间,调用父类的内容就用super。所以应该是可以打印出来的。
作者: Marx_D    时间: 2015-9-19 23:58
本帖最后由 Marx_D 于 2015-9-20 00:00 编辑


作者: Marx_D    时间: 2015-9-20 00:19
  1. class Fu {
  2.         public int x = 10;
  3.         public Fu(){
  4.         }
  5.         public Fu(int x) {
  6.                 System.out.println("Fu……" + x);
  7.         }
  8.         public void show() {
  9.                 System.out.println("Fu……show");
  10.         }
  11. }

  12. class Zi extends Fu {
  13.         public int x = 20;
  14.         public Zi() {
  15.                 super(10);                // Fu……20,创建对象的时候,会先去对父类进行初始化。
  16.                 System.out.println("Zi……x" +x);        // 20
  17.                 System.out.println("Zi……x" + this.x + " -- Fu……x" + super.x);
  18.                 this.show();    //  Zi……show,如果子类没有同名的show,就会去调用父类的show()
  19.                 super.show();        // Fu……show
  20.                 System.out.println(this);// Zi@5a20d10a
  21.           //System.our.println(super);// 报错
  22.         }
  23.         public void show() {
  24.                 System.out.println("Zi……show");
  25.         }
  26. }
  27. class Demo {
  28.         public static void main(String[] args) {
  29.                 Zi zi = new Zi();
  30.         }
  31. }
复制代码



作者: 193936696    时间: 2015-9-20 00:48
我来看看答案
作者: 劲爆对策    时间: 2015-9-20 02:06
super关键字场景是发生在子类和父类之间,用于指明我(super)后面的信息直接跳过我从我父类里面找吧。this调用方法完全和子类引用调用方法效果一样。
作者: sxwnzbn    时间: 2015-9-20 09:36
楼上是正解
作者: lion_good    时间: 2015-9-20 10:23
顶顶....
作者: pengwei1989    时间: 2015-9-20 10:39
我来看答案的
作者: foreverfun    时间: 2015-9-20 20:24
Marx_D 发表于 2015-9-20 00:19

是啊,super如果拿来打印的时候就会报错,所以不是很理解
作者: foreverfun    时间: 2015-9-20 20:25
安仔 发表于 2015-9-19 21:52
this的作用执行的是创建此对象的类的成员,super指向的是父类所在的空间,调用父类的内容就用super。所以应 ...

我以前也认为能打印出来,实际上如果将super打印是错误的
作者: 安仔    时间: 2015-9-20 20:39
foreverfun 发表于 2015-9-20 20:25
我以前也认为能打印出来,实际上如果将super打印是错误的

this:代表的是本类的对象的引用。
super:代表的是父类的内存空间。
这个解释应该是没有错的,真想研究的话,去API里查下super可能更快
作者: 清明月雨上    时间: 2015-9-20 22:16
this可以掉用父类的方法 这个方法如果子类有父类木有的话  new 对象时候 会继承父类的方法




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2