上一篇:再生与终结-初识属性覆盖与final | 带你学《Java面向对象编程》之四十一
【本节目标】
通过阅读本节内容,你将进一步掌握简单类及其常见属性、方法的编写过程,进一步理解继承的意义。
继承分析案例
下面将通过几个简短的程序要求对于继承的概念进行巩固。对于程序开发而言,简单Java类是其最基础的组成,也是所有概念最好的融合。
案例分析一(学生类)
建立一个人类(Person)和学生类(Student) ,功能要求如下:
(1)Person中包含4个私有型的数据成员name、addr、Sex、age,分别为字符串型、字符串型、字符型及整型,表示姓名、地址、性别和年龄。一个4参构造方法、一个两参构造方法、一个无参构造方法、一个输出方法显示4种属性。
(2) Student类继承Person类, 并增加成员math、english存放数学和英语成绩。一个6参构造方法、一个两参构造方法、一个无参构造方法和重写输出方法用于显示6种属性。
正常来讲,进行一个程序类开发的时候是不需要去考虑子类的问题的,也就是说现在需要做的是进行程序功能的完善定义。所以首先来定义的就是Person类。
class Person {
private String name ;
private String addr ;
private char sex ;
private int age ;
public Person() {}
public Person(String name , String addr) {
this(name ,addr ,’男’ , 0) ;
}
public Person(String name , String addr , char sex , int age) {
this.name = name ;
this.addr = addr ;
this.sex = sex ;
this.age = age ;
}
public String getInfo () {
return ”姓名:” + this.name + “、地址:” + this.addr + “、性别:” + this.sex + “、年龄:” + this.age ;
}
}
class Student extends Person {
private double math ;
private double english ;
public Student() {}
public Student(String name , String addr) {
super(name,addr) ;
}
public Student(String name , String addr , char sex, int age , double math, double english) {
super(name ,addr, sex,age) ;
this.math = math ;
this.english = english ;
}
public String getInfo () {
return super.getInfo() + “、数学成绩:” + this.math + “、英语成绩:” + this.english ;
}
}
public class JavaDemo{
public static void main(String args[]) {
Student stu = new Student(“张三” , “*” , “男” , 12 ,78.99 , 89.98) ;
System.out.println(stu.getInfo()) ;
}
}
图一 执行结果一
在这样的操作案例里面发现子类对象实例化、构造方法调用、方法覆写全部都有了。
案例分析二(管理人员与职员)
定义员工类,具有姓名、年龄、性别属性,并具有构造方法和显示数据方法。
定义管理层类,继承员工类, 并有自己的属性职务和年薪。 定义职员类,继承员工类,并有自己的属性所属部门和月薪。
class Employee {
private String name ;
private int age ;
private String sex ;
public Employee() {}
public Employee(String name , int age , String sex) {
this.name = name ;
this.age = age ;
this.sex = sex ;
}
public String getInfo() {
return “姓名:” + this.name + “、年龄:” + this.age + “、性别:” + this.sex ;
}
}
class Manager extends Employee { //管理层
private String job ;
private double income ;
public Manager () {}
public Manager (String name , int age , String sex , String job , double income) {
super(name , age , sex) ;
this.job = job ;
this.income = income ;
}
public String getInfo() {
return “【管理层】”super.getInfo() + “、职务:” + this.job + “、年薪:” + this.income ;
}
}
class Staff extends Employee {
private String dept ;
private double salary ;
public Staff () {}
public Staff (String name , int age , String sex , String dept , double salary) {
super(name , age , sex) ;
this.dept = dept ;
this.salary = salary ;
}
public String getInfo() {
return “【职员】”super.getInfo() + “、部门:” + this.dept + “、月薪:” + this.salary ;
}
public class JavaDemo{
public static void main(String args[]) {
Manager man = new Manager(“张三” , 38 ,”女” , “主管” , 150000.00) ;
Staff sta = new Staff(“李四” , 18 ,”男” , “出纳” , 3000.00) ;
System.out.println(man.getInfo()) ;
System.out.println(sta.getInfo()) ;
}
}
图二 执行结果二
想学习更多的Java的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学