修饰符 class class_name extends extend_class { // 类的主体 }其中,class_name 表示子类(派生类)的名称;extend_class 表示父类(基类)的名称;extends 关键字直接跟在子类名之后,其后面是该类要继承的父类名称。例如:
public class Student extends Person{}Java 的继承通过 extends 关键字来实现,extends 的英文意思是扩展,而不是继承。extends 很好的体现了子类和父类的关系,即子类是对父类的扩展,子类是一种特殊的父类。从这个角度看,使用继承来描述子类和父类的关系是错误的,用扩展更恰当。
类的继承不改变类成员的访问权限,也就是说,如果父类的成员是公有的、被保护的或默认的,它的子类仍具有相应的这些特性,并且子类不能获得父类的构造方法。Java 与 C++ 定义继承类的方式十分相似。Java 用关键字 extends 代替了 C++ 中的冒号(:)。在 Java 中,所有的继承都是公有继承, 而没有 C++ 中的私有继承和保护继承。
public class People { public String name; // 姓名 public int age; // 年龄 public String sex; // 性别 public String sn; // 身份证号 public People(String name, int age, String sex, String sn) { this.name = name; this.age = age; this.sex = sex; this.sn = sn; } public String toString() { return "姓名:" + name + "\n年龄:" + age + "\n性别:" + sex + "\n身份证号:" + sn; } }如上述代码,在 People 类中包含 4 个公有属性、一个构造方法和一个 toString() 方法。
public class Student extends People { private String stuNo; // 学号 private String department; // 所学专业 public Student(String name, int age, String sex, String sn, String stuno, String department) { super(name, age, sex, sn); // 调用父类中的构造方法 this.stuNo = stuno; this.department = department; } public String toString() { return "姓名:" + name + "\n年龄:" + age + "\n性别:" + sex + "\n身份证号:" + sn + "\n学号:" + stuNo + "\n所学专业:" + department; } }由于 Student 类继承自 People 类,因此,在 Student 类中同样具有 People 类的属性和方法,这里重写了父类中的 toString() 方法。
public class Teacher extends People { private int tYear; // 教龄 private String tDept; // 所教专业 public Teacher(String name, int age, String sex, String sn, int tYear, String tDept) { super(name, age, sex, sn); // 调用父类中的构造方法 this.tYear = tYear; this.tDept = tDept; } public String toString() { return "姓名:" + name + "\n年龄:" + age + "\n性别:" + sex + "\n身份证号:" + sn + "\n教龄:" + tYear + "\n所教专业:" + tDept; } }Teacher 类与 Student 类相似,同样重写了父类中的 toString() 方法。
public class PeopleTest { public static void main(String[] args) { // 创建Student类对象 People stuPeople = new Student("王丽丽", 23, "女", "410521198902145589", "00001", "计算机应用与技术"); System.out.println("----------------学生信息---------------------"); System.out.println(stuPeople); // 创建Teacher类对象 People teaPeople = new Teacher("张文", 30, "男", "410521198203128847", 5, "计算机应用与技术"); System.out.println("----------------教师信息----------------------"); System.out.println(teaPeople); } }运行程序,输出的结果如下:
----------------学生信息--------------------- 姓名:王丽丽 年龄:23 性别:女 身份证号:410521198902145589 学号:00001 所学专业:计算机应用与技术 ----------------教师信息---------------------- 姓名:张文 年龄:30 性别:男 身份证号:410521198203128847 教龄:5 所教专业:计算机应用与技术
class Student extends Person,Person1,Person2{…} class Student extends Person,extends Person1,extends Person2{…}
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有