教你从实战中领悟继承(上) | 带你学《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()) ;
    }         
}

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()) ;
    }         
}

image.png
图二 执行结果二

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

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

相关文章
|
2月前
|
安全 Java 开发者
告别NullPointerException:Java Optional实战指南
告别NullPointerException:Java Optional实战指南
278 119
|
3月前
|
存储 前端开发 Java
【JAVA】Java 项目实战之 Java Web 在线商城项目开发实战指南
本文介绍基于Java Web的在线商城技术方案与实现,涵盖三层架构设计、MySQL数据库建模及核心功能开发。通过Spring MVC + MyBatis + Thymeleaf实现商品展示、购物车等模块,提供完整代码示例,助力掌握Java Web项目实战技能。(238字)
414 0
|
3月前
|
Java 开发者
Java并发编程:CountDownLatch实战解析
Java并发编程:CountDownLatch实战解析
469 100
|
3月前
|
人工智能 Java API
Java AI智能体实战:使用LangChain4j构建能使用工具的AI助手
随着AI技术的发展,AI智能体(Agent)能够通过使用工具来执行复杂任务,从而大幅扩展其能力边界。本文介绍如何在Java中使用LangChain4j框架构建一个能够使用外部工具的AI智能体。我们将通过一个具体示例——一个能获取天气信息和执行数学计算的AI助手,详细讲解如何定义工具、创建智能体并处理执行流程。本文包含完整的代码示例和架构说明,帮助Java开发者快速上手AI智能体的开发。
1204 8
|
3月前
|
人工智能 Java API
Java与大模型集成实战:构建智能Java应用的新范式
随着大型语言模型(LLM)的API化,将其强大的自然语言处理能力集成到现有Java应用中已成为提升应用智能水平的关键路径。本文旨在为Java开发者提供一份实用的集成指南。我们将深入探讨如何使用Spring Boot 3框架,通过HTTP客户端与OpenAI GPT(或兼容API)进行高效、安全的交互。内容涵盖项目依赖配置、异步非阻塞的API调用、请求与响应的结构化处理、异常管理以及一些面向生产环境的最佳实践,并附带完整的代码示例,助您快速将AI能力融入Java生态。
578 12
|
2月前
|
存储 人工智能 算法
从零掌握贪心算法Java版:LeetCode 10题实战解析(上)
在算法世界里,有一种思想如同生活中的"见好就收"——每次做出当前看来最优的选择,寄希望于通过局部最优达成全局最优。这种思想就是贪心算法,它以其简洁高效的特点,成为解决最优问题的利器。今天我们就来系统学习贪心算法的核心思想,并通过10道LeetCode经典题目实战演练,带你掌握这种"步步为营"的解题思维。
|
Java 程序员
Java中的继承和多态:理解面向对象编程的核心概念
【8月更文挑战第22天】在Java的世界中,继承和多态不仅仅是编程技巧,它们是构建可维护、可扩展软件架构的基石。通过本文,我们将深入探讨这两个概念,并揭示它们如何共同作用于面向对象编程(OOP)的实践之中。你将了解继承如何简化代码重用,以及多态如何为程序提供灵活性和扩展性。让我们启程,探索Java语言中这些强大特性的秘密。
|
11月前
|
Java
Java 面向对象编程的三大法宝:封装、继承与多态
本文介绍了Java面向对象编程中的三大核心概念:封装、继承和多态。
577 15
|
Java 编译器
Java——类与对象(继承和多态)
本文介绍了面向对象编程中的继承概念,包括如何避免重复代码、构造方法的调用规则、成员变量的访问以及权限修饰符的使用。文中详细解释了继承与组合的区别,并探讨了多态的概念,包括向上转型、向下转型和方法的重写。此外,还讨论了静态绑定和动态绑定的区别,以及多态带来的优势和弊端。
344 7
Java——类与对象(继承和多态)