A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 蓝雨星空 高级黑马   /  2013-10-23 19:09  /  1436 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

         看了毕老师的继承部分的视频,好难理解super,this我明白了,但是super和this有好大的区别。各位同学能不能举个简单的例子说明一下……super到底是一个父类的引用呢?还是它只是一个指向父类所在方法区的标识?搞不懂……

4 个回复

倒序浏览
本帖最后由 张运 于 2013-10-23 19:27 编辑

实际super的真正的应用只有两点:
1.子类可以调用由父类声明的构造方法。但是必须在子类的构造方法中使用super关键字来调用,格式:
   super(参数);
2.如果想在子类中操作父类中被隐藏的成员变量和被覆盖的成员方法,也可以使用super关键字
   super.成员函数/成员变量,super其实只是一个标识的符号。就是指代父类,和this指代当前对象一样

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
简单的说:就是在子类中想使用父类中的非私有成员,那么就使用super调用!
  1. public class Fu {
  2.         public  String name="父类";
  3.         public Fu(String name) {
  4.                 System.out.println("父类有参构造方法");
  5.         }
  6. }
  7. public class Zi extends Fu {
  8.         public String name="子类";
  9.         public Zi(String name){
  10.                 super(name);//调用父类的构造函数
  11.                 System.out.println("子类有参构造方法");
  12.         }
  13.    public void show(){
  14.            System.out.println("父类的name="+super.name);//使用super调用父类中的成员
  15.    }
  16.         public static void main(String[] agrs) {
  17.                 Zi z = new Zi("张三");
  18.                 z.show();
  19.         }
  20. }
  21. 结果:
  22. 父类有参构造方法
  23. 子类有参构造方法
  24. 父类的name=父类
复制代码
希望对你有帮助!

评分

参与人数 1技术分 +1 收起 理由
周志龙 + 1 赞一个!

查看全部评分

回复 使用道具 举报
第一种super.xxx;(xxx为变量名或对象名)这种方法意义为,获取父类中的名字为xxx的变量或方法引用。使用这种方法可以直接访问父类中的变量或对象,进行修改赋值等操作第二种super.xxx();(xxx为方法名)这种方法意义为,直接访问并调用父类中的方法。第三种super();这种方法意义为,调用父类的初始化方法,其实就是调用父类中的public xxx()方法.
回复 使用道具 举报
super关键字分为两种:
1,super语句调用父类的构造函数:子类不继承父类的构造方法,因此,子类如果想使用父类的构造方法,必须在子类的构造方法中使用,并且必须使用关键字super来表示,而且super必须是子类构造方法中的第一句。同理,类比this语句
2,super调用父类的成员:在非静态方法中,可以调用父类的变量或方法(非private),同理与this调用。super代表当前对象的父类对象的应用、。

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马