教你从实战中领悟继承(上) | 带你学《Java面向对象编程》之四十二

简介: 本节将结合学校情景与职场情景进行简单类编写实战,通过符合常识的逻辑抽象体现继承的理念。

上一篇:再生与终结-初识属性覆盖与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()) ;
    }         
}
AI 代码解读

image.png
图一 执行结果一

在这样的操作案例里面发现子类对象实例化、构造方法调用、方法覆写全部都有了。

案例分析二(管理人员与职员)

定义员工类,具有姓名、年龄、性别属性,并具有构造方法和显示数据方法。
定义管理层类,继承员工类, 并有自己的属性职务和年薪。 定义职员类,继承员工类,并有自己的属性所属部门和月薪。

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()) ;
    }         
}
AI 代码解读

image.png
图二 执行结果二

想学习更多的Java的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学

下一篇:教你从实战中领悟继承(中) | 带你学《Java面向对象编程》之四十三
更多Java面向对象编程文章查看此处

相关文章
|
1月前
|
Java 面向对象编程的三大法宝:封装、继承与多态
本文介绍了Java面向对象编程中的三大核心概念:封装、继承和多态。
113 15
|
29天前
|
Java中的分布式缓存与Memcached集成实战
通过在Java项目中集成Memcached,可以显著提升系统的性能和响应速度。合理的缓存策略、分布式架构设计和异常处理机制是实现高效缓存的关键。希望本文提供的实战示例和优化建议能够帮助开发者更好地应用Memcached,实现高性能的分布式缓存解决方案。
40 9
【潜意识Java】深入理解 Java 面向对象编程(OOP)
本文介绍了Java中的面向对象编程(OOP)核心概念,包括封装、继承、多态和抽象。封装通过访问控制保护数据,提高安全性;继承支持代码复用,减少冗余;多态实现灵活的行为调用;抽象则隐藏细节,简化接口设计。掌握这些概念有助于编写高效、灵活且易于维护的代码。文章通过实例详细讲解了每个概念在Java中的应用,并总结了它们的优势。
45 3
|
3月前
|
Java 面向对象编程
总之,Java 的面向对象编程为开发者提供了一种有效的编程范式,帮助他们构建出高质量、可维护的软件系统。理解和掌握面向对象的概念和原则是成为优秀 Java 开发者的重要基础。
215 63
|
3月前
|
在Java中,接口之间可以继承吗?
接口继承是一种重要的机制,它允许一个接口从另一个或多个接口继承方法和常量。
291 60
Java基础却常被忽略:全面讲解this的实战技巧!
本次分享来自于一道Java基础的面试试题,对this的各种妙用进行了深度讲解,并分析了一些关于this的常见面试陷阱,主要包括以下几方面内容: 1.什么是this 2.this的场景化使用案例 3.关于this的误区 4.总结与练习
Java基础却常被忽略:全面讲解this的实战技巧!
小米,29岁程序员,分享Java中`this`关键字的用法。`this`代表当前对象引用,用于区分成员变量与局部变量、构造方法间调用、支持链式调用及作为参数传递。文章还探讨了`this`在静态方法和匿名内部类中的使用误区,并提供了练习题。
56 1
Java社招面试题:一个线程运行时发生异常会怎样?
大家好,我是小米。今天分享一个经典的 Java 面试题:线程运行时发生异常,程序会怎样处理?此问题考察 Java 线程和异常处理机制的理解。线程发生异常,默认会导致线程终止,但可以通过 try-catch 捕获并处理,避免影响其他线程。未捕获的异常可通过 Thread.UncaughtExceptionHandler 处理。线程池中的异常会被自动处理,不影响任务执行。希望这篇文章能帮助你深入理解 Java 线程异常处理机制,为面试做好准备。如果你觉得有帮助,欢迎收藏、转发!
54 14
Java 面试必问!线程构造方法和静态块的执行线程到底是谁?
大家好,我是小米。今天聊聊Java多线程面试题:线程类的构造方法和静态块是由哪个线程调用的?构造方法由创建线程实例的主线程调用,静态块在类加载时由主线程调用。理解这些细节有助于掌握Java多线程机制。下期再见! 简介: 本文通过一个常见的Java多线程面试题,详细讲解了线程类的构造方法和静态块是由哪个线程调用的。构造方法由创建线程实例的主线程调用,静态块在类加载时由主线程调用。理解这些细节对掌握Java多线程编程至关重要。
39 13
【JAVA】封装多线程原理
Java 中的多线程封装旨在简化使用、提高安全性和增强可维护性。通过抽象和隐藏底层细节,提供简洁接口。常见封装方式包括基于 Runnable 和 Callable 接口的任务封装,以及线程池的封装。Runnable 适用于无返回值任务,Callable 支持有返回值任务。线程池(如 ExecutorService)则用于管理和复用线程,减少性能开销。示例代码展示了如何实现这些封装,使多线程编程更加高效和安全。

热门文章

最新文章