首页 > 编程语言 >Java面向对象程序三大特性:封装、继承、多态

Java面向对象程序三大特性:封装、继承、多态

时间:2024-07-20 22:55:28浏览次数:14  
标签:封装 name age 多态 void Java public 三大

目录

  引言

一. 封装

二.继承

三.多态

四.结论


  引言

  在现代软件开发中,面向对象编程(OOP)已成为一种流行且有效的编程范式,其中Java语言以其高效性和灵活性深受开发者的喜爱。面向对象编程的核心在于其三大特性:封装、继承和多态。这些特性不仅提高了代码的重用性和可维护性,还使得程序设计更加贴近现实世界。在本文中,我们将深入探讨Java的这三大面向对象特性,并通过实例展示其应用。

一. 封装

  封装是面向对象程序设计的基础,指的是将对象的状态和行为封装在一起,并对外提供访问接口。通过封装,开发者可以隐藏对象的内部实现细节,仅暴露必要的方法供外部调用。这种做法有几个主要优点:

 1. 数据保护:封装使得对象的状态不容易被外部直接修改,从而维护了数据的完整性和安全性。
简化接口:通过封装,用户只需关注对象提供的接口,而不必关心其具体实现,降低了程序的复杂性。
 2. 易于维护:实现细节的变化不会影响到使用该对象的代码,只要接口不变,外部调用者无需做任何修改。

  在Java中,我们通常通过访问修饰符(如private、protected和public和default)来实现封装。

public:可以理解为一个人的外貌特征,谁都可以看得到

default: 对于自己家族中(同一个包中)不是什么秘密,对于其他人来说就是隐私了

private:只有自己知道,其他人都不知道

例如,考虑以下Person类的实现:

ublic class Person {  
    private String name; // 姓名,使用private修饰符进行封装  
    private int age;     // 年龄,使用private修饰符进行封装  

    public Person(String name, int age) {  
        this.name = name;  
        this.age = age;  
    }  

    // 提供getter方法以访问姓名  
    public String getName() {  
        return name;  
    }  

    // 提供setter方法以修改姓名  
    public void setName(String name) {  
        this.name = name;  
    }  

    // 提供getter方法以访问年龄  
    public int getAge() {  
        return age;  
    }  

    // 提供setter方法以修改年龄  
    public void setAge(int age) {  
        if (age > 0) { // 添加基本的合法性校验  
            this.age = age;  
        }  
    }  
}  


  在上述代码中,name和age字段被声明为private,无法直接从外部访问。通过提供公共的getter和setter方法,外部代码可以安全地访问和修改这些字段。

二.继承

  继承是面向对象编程的另一重要特性,它允许一个类从已有的类派生出新的类。这种机制促成了代码的重用,使得开发者能够通过扩展现有类来创建新类,从而避免重复代码。继承具有以下几个优点:

1.代码重用:子类可以直接访问父类的方法和属性,减少了代码的冗余。
2.层次结构:继承形成了类的层次结构,有助于管理和维护大量的类。
3.多态性:通过继承支持多态特性,使得同一接口可以有不同的实现,增强了系统的灵活性。

在Java中,继承通过extends关键字实现。例如,考虑下列Employee类和Manager类的定义:

class Employee {  
    protected String name; // 受保护字段,允许子类访问  
    protected double salary;  

    public Employee(String name, double salary) {  
        this.name = name;  
        this.salary = salary;  
    }  

    public void work() {  
        System.out.println(name + " is working.");  
    }  

    public double getSalary() {  
        return salary;  
    }  
}  

class Manager extends Employee {  
    private double bonus;  

    public Manager(String name, double salary, double bonus) {  
        super(name, salary); // 调用父类构造函数  
        this.bonus = bonus;  
    }  

    @Override  
    public void work() {  
        System.out.println(name + " is managing employees.");  
    }  

    public double calculateTotalSalary() {  
        return salary + bonus; // 计算总薪水  
    }  
}


  在该示例中,Manager类继承自Employee类,拥有Employee类的所有属性和方法,并能够重写work()方法来实现自己的行为。

三.多态

  多态是面向对象编程中最重要的特性之一,指的是同一操作可以作用于不同类型的对象上。Java通过方法重载和方法重写支持多态,允许程序在运行时根据对象的实际类型选择相应的方法进行调用。这种机制提高了程序的灵活性和可扩展性。

  1.方法重载:在同一个类中,允许根据参数的不同来定义多个同名的方法。
  2.方法重写:子类可以重写父类的方法,以实现特定的行为。

以下是多态的简单示例:

class Animal {  
    public void sound() {  
        System.out.println("Animal makes sound");  
    }  
}  

class Dog extends Animal {  
    @Override  
    public void sound() {  
        System.out.println("Dog barks");  
    }  
}  

class Cat extends Animal {  
    @Override  
    public void sound() {  
        System.out.println("Cat meows");  
    }  
}  

public class Main {  
    public static void main(String[] args) {  
        Animal myDog = new Dog(); // 向上转型  
        Animal myCat = new Cat(); // 向上转型  

        myDog.sound(); // 输出: Dog barks  
        myCat.sound(); // 输出: Cat meows  
    }  
}


  在上述代码中,Animal类有一个sound()方法,而Dog和Cat类分别重写了这个方法。通过将Dog和Cat对象引用赋值给Animal类型的变量,我们可以利用多态性,在运行时决定调用哪个具体的方法。

四.结论

  在Java编程中,封装、继承和多态是构建灵活、可维护和可扩展应用程序的核心特性。通过合理地运用这三大特性,开发者能够将复杂的问题分解为更小的、易于管理的单位,大大提升了软件开发的效率和质量。面向对象编程不仅加快了开发速度,还有助于实现高内聚、低耦合的系统设计理念,是现代软件开发中不可或缺的一部分。希望通过本文的深入探讨,读者能够对Java的面向对象特性有更清晰的理解和应用。

标签:封装,name,age,多态,void,Java,public,三大
From: https://blog.csdn.net/XHgga_/article/details/140579030

相关文章

  • Java 语言及其常用集合类的操作,以及反射机制与注解
    目录一、Java语言概述二、Java集合框架ArrayList操作示例:HashMap操作示例:三、反射机制1.反射的示例五、总结Java是一种广泛使用的高级编程语言,因其平台独立性、简洁性及丰富的API而备受开发者青睐。一、Java语言概述 Java语言由JamesGosling等人......
  • Java线程池ForkJoinPool原理分析
    目录1.由一道算法题引发的思考2.基于归并排序算法实现2.1什么是归并排序2.2归并排序动图演示2.3使用归并排序实现上面的算法题单线程实现归并排序Fork/Join并行归并排序2.4并行实现归并排序的优化和注意事项3.Fork/Join框架介绍3.1什么是Fork/Join3.2应用......
  • springboot基于Java的人力资源管理系统的设计与实现人事管理工资员工管理系统(源码+lw
    具体实现截图技术栈后端框架SpringBoot采用springboot作为后台的框架,java框架具有简化配置和开发的效率。Spring框架目前是很多java开发者的首选框架,Spring主要有两大功能,控制反转和面向切面的编程。控制反转(IOC)可以实现代码的依赖注入,减少代码......
  • springboot基于Java的企业人才引进服务平台的设计与实现(源码+lw+部署文档+讲解等)
    具体实现截图技术栈后端框架SpringBoot采用springboot作为后台的框架,java框架具有简化配置和开发的效率。Spring框架目前是很多java开发者的首选框架,Spring主要有两大功能,控制反转和面向切面的编程。控制反转(IOC)可以实现代码的依赖注入,减少代......
  • Java工具库——Hutool的常用方法
    Hutool-All(或简称Hutool)是一个功能强大的Java编程工具库,旨在简化Java应用程序的开发。它提供了大量的工具类和方法,涵盖了各种常见任务,包括字符串处理、日期时间操作、文件操作、网络通信、加密解密、数据转换、图像处理、JSON操作、Excel处理、邮件发送等等。以下是Hutool-All的......
  • Java学习日历(static,工具类,继承)
    staticstatic表示静态,是Java中的一个修饰符,可以修饰成员方法,成员变量。特点:被该类所有对象共享不属于对象,属于类随着类的加载而加载,优先于对象存在调用方式:类名调用(推荐)对象名调用工具类帮助我们做一些事情的,但是不描述任何事物的类类名见名知意私有化构造方法......
  • JAVA学习篇(1)初学JAVA
    一.了解JAVAJava是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌......
  • Java反射
    java是面向对象的编程语言,对象,是一种具体的概念类:类是对具有相同特征或属性,具有相同行为能力的一类事物的描述或称呼对象:对象是这一类事物带有属性值,具有具体行为的个体或实例面向对象编程的语言packagetest;//定义一个类publicclassPhone{//添加一些属性......
  • Java入门知识
    Java特性和优势简单性面向对象可移植性高性能分布式动态性多线程安全性健壮性Java三大版本JavaSE:标准版(桌面程序,控制开发....)JavaME:嵌入式开发(手机,小家电....)JavaEE:E企业级开发(web端,服务器开发...)JDK、JRE、JVMJDK:JavaDevelopmentKitJRE:JavaRuntimeE......
  • java学习3
    这周的话想直接通过一个项目去进行学习,但是效果没有想象中的那么大好,我在网上抄了一个还算简单的图书管理系统,能连接数据库,将数据导入数据库。不像之前输入的数据结束程序就没了。但是只能增,没有删,改,查抄这个系统的时候出现了很多我不认识的技术栈,这时候我意识到一个完整项目是......