package com.xing.test; public class Peple168 { public String name; public int age; public String sex; public String sn; public Peple168(String name,int age,String sex,String sn){ this.name=name; this.age=age; this.sex=sex; this.sn=sn; }
public Peple168(String name){
this.name=name;
}
@Override public String toString() { return "Peple168 [姓名=" + name + ", 年龄=" + age + ", 性别=" + sex + ", 身份证号=" + sn + "]"; } } package com.xing.test; public class Student168 extends Peple168 { private String stuNo; public Student168(String name, int age, String sex, String sn,String stuNo) { super(name, age, sex, sn);//由于子类不能继承父类的构造方法,因此要调用父类的构造方法,必须在子类的构造方法体的第一行使用super().已调用父类相应的构造方法,来完成子类对象的部分初始化工作。父类有两个构造方法,该子类中调用了有四个参数的方法 this.stuNo=stuNo; } @Override public String toString() { return "Student168 [姓名=" + name + ", 年龄=" + age + ", 性别=" + sex + ", 身份证号=" + sn + ",stuNo=" + stuNo + "]"; } } package com.xing.test; public class Teacher168 extends Peple168 { private int tYear; public Teacher168(String name, int age, String sex, String sn,int tYear) { super(name, age, sex, sn); this.tYear=tYear; } @Override public String toString() { return "Teacher168 [姓名=" + name + ", 年龄=" + age + ", 性别=" + sex + ", 身份证号=" + sn + ",tYear=" + tYear + "]"; } } package com.xing.test; public class Peple168Test { /** * @param args */ public static void main(String[] args) { Peple168 pp1=new Peple168("zhang", 15, "nv", "123555"); System.out.println(pp1); Peple168 pp2=new Student168("san", 16, "M", "564", "56"); System.out.println(pp2); Peple168 pp3=new Teacher168("wang", 56, "M", "564", 6); System.out.println(pp3); } }
Peple168 [姓名=zhang, 年龄=15, 性别=nv, 身份证号=123555] Student168 [姓名=san, 年龄=16, 性别=M, 身份证号=564,stuNo=56] Teacher168 [姓名=wang, 年龄=56, 性别=M, 身份证号=564,tYear=6]
如果在父类中存在有参的构造方法而并没有重载无参的构造方法,那么在子类中必须含有有参的构造方法,因为如果子类中不含有构造方法,默认会调用父类的无参构造方法,而在父类中并没有无参的构造方法,因此会出错。
Java不允许多继承,即一个子类只能有一个直接父类而可以有多个间接父类。如果类声明的头部没有定义任何extends子句,则该类隐含继承java.lang.Object类
super.member member 是父类中的方法或属性名称,这种形式多用于子类的成员名隐藏了父类的同名成员的情况。