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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lvjayj 中级黑马   /  2013-8-11 10:51  /  1087 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 lvjayj 于 2013-8-11 17:42 编辑

使用 super 关键字为父类属性复制时其必须位于子类中的构造方法的首行,非为父类属性赋值则必须位于子类构造方法中的this关键字非赋值之前。 掉用父类的构造方法要使用super ,子类构造方法中缺省时,Java编译器会自动在子类的构造方法的首行加上super关键字,以完成对父类的继承。

下面具体说明:
1、父类 ParentClass.ava
  1. package com.etecha.server;
  2. public class ParentClass {
  3. private String name;

  4. public ParentClass() {
  5.   // TODO Auto-generated constructor stub
  6. }

  7. public ParentClass(String name)
  8. {
  9.   this.name = name;
  10. }

  11. public void other()
  12. {
  13.   System.out.println("第三方方法!");
  14. }
  15. public String getName() {
  16.   return name;
  17. }
  18. public void setName(String name) {
  19.   this.name = name;
  20. }
  21. }
复制代码
2、子类 ChildClass.java
  1. package com.etecha.server;
  2. public class ChildClass extends ParentClass {
  3. private String name;
  4. private int age;

  5. public ChildClass() {
  6.   // TODO Auto-generated constructor stub
  7.   super();
  8.   System.out.println("子类中的 name = " + this.name);
  9.   System.out.println("父类中的 name = " + super.getName());
  10. }

  11. public ChildClass(String name, int age)
  12. {
  13.   super(name);
  14.   this.age = age;
  15.   System.out.println("父类中的 name = " + super.getName());
  16.   System.out.println("子类中的 age = " + this.getAge());
  17. }

  18. public void say(String name)
  19. {
  20.   this.name = name;
  21.   System.out.println("子类中的 name = " + this.name);
  22. }
  23. public String getName() {
  24.   return name;
  25. }
  26. public void setName(String name) {
  27.   this.name = name;
  28. }
  29. public int getAge() {
  30.   return age;
  31. }
  32. public void setAge(int age) {
  33.   this.age = age;
  34. }
  35. }
复制代码
3、测试类 ParentChildClassTest.java
  1. package com.etecha.client;
  2. import com.etecha.server.ChildClass;
  3. public class ParentChildClassTest {
  4. /**
  5.   * @param args
  6.   */
  7. public static void main(String[] args) {
  8.   ChildClass child1 = new ChildClass();
  9.   ChildClass child2 = new ChildClass("张三", 18);
  10.   child1.say("王五");
  11. }
  12. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1

查看全部评分

4 个回复

倒序浏览
非构造方法中不能使用super关键字?
回复 使用道具 举报
构造 方法可以使用吧
回复 使用道具 举报
神之梦 发表于 2013-8-11 14:45
非构造方法中不能使用super关键字?

嗯,我说的有问题~
应该这么说:掉用父类的构造方法时才使用super。普通方法,可以直接调用。
回复 使用道具 举报
lvjayj 发表于 2013-8-11 17:41
嗯,我说的有问题~
应该这么说:掉用父类的构造方法时才使用super。普通方法,可以直接调用。 ...

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