本帖最后由 lvjayj 于 2013-8-11 17:42 编辑
使用 super 关键字为父类属性复制时其必须位于子类中的构造方法的首行,非为父类属性赋值则必须位于子类构造方法中的this关键字非赋值之前。 掉用父类的构造方法要使用super ,子类构造方法中缺省时,Java编译器会自动在子类的构造方法的首行加上super关键字,以完成对父类的继承。
下面具体说明: 1、父类 ParentClass.ava - package com.etecha.server;
- public class ParentClass {
- private String name;
-
- public ParentClass() {
- // TODO Auto-generated constructor stub
- }
-
- public ParentClass(String name)
- {
- this.name = name;
- }
-
- public void other()
- {
- System.out.println("第三方方法!");
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- }
复制代码 2、子类 ChildClass.java- package com.etecha.server;
- public class ChildClass extends ParentClass {
- private String name;
- private int age;
-
- public ChildClass() {
- // TODO Auto-generated constructor stub
- super();
- System.out.println("子类中的 name = " + this.name);
- System.out.println("父类中的 name = " + super.getName());
- }
-
- public ChildClass(String name, int age)
- {
- super(name);
- this.age = age;
- System.out.println("父类中的 name = " + super.getName());
- System.out.println("子类中的 age = " + this.getAge());
- }
-
- public void say(String name)
- {
- this.name = name;
- System.out.println("子类中的 name = " + this.name);
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- }
复制代码 3、测试类 ParentChildClassTest.java- package com.etecha.client;
- import com.etecha.server.ChildClass;
- public class ParentChildClassTest {
- /**
- * @param args
- */
- public static void main(String[] args) {
- ChildClass child1 = new ChildClass();
- ChildClass child2 = new ChildClass("张三", 18);
- child1.say("王五");
- }
- }
复制代码
|