浅谈java中OO的概念和设计原则(必看)

浅谈Java中OO的概念和设计原则

一、面向对象的概念

面向对象是一种编程思想,将现实世界事物抽象成对象,对象之间通过方法进行交互,实现程序的功能。在Java中,每个对象由类来实现,类是一组具有相同属性和方法的对象的集合。

Java中三大面向对象的特性:封装、继承、多态。

1. 封装

封装就是把对象的数据和方法封装起来,对外提供统一的接口。封装可以保护对象内部的复杂性,使得外部调用者无需知道具体实现细节,而只需要通过接口进行调用。

示例代码:

public class Student{
    private String name;
    private int age;

    public String getName(){
        return name;
    }

    public void setName(String name){
        this.name = name;
    }

    public int getAge(){
        return age;
    }

    public void setAge(int age){
        this.age = age;
    }
}

在上述示例中,将学生对象的name和age属性都设置为私有属性,外部无法直接访问,通过public的set和get方法提供了统一的接口,外部只能通过接口进行访问。

2. 继承

继承是一种从已有类派生出新类的机制,新类具有父类的所有属性和方法,并且可以新增自己的属性和方法。

示例代码:

public class Animal{
    private String name;

    public Animal(String name){
        this.name = name;
    }

    public String getName(){
        return name;
    }

    public void run(){
        System.out.println(name + " is running...");
    }
}

public class Dog extends Animal{
    public Dog(String name){
        super(name);
    }

    public void bark(){
        System.out.println(getName() + " is barking...");
    }
}

在上述示例中,Dog类继承了Animal类,具有Animal类的name属性和run方法,新增了自己的bark方法。

3. 多态

多态是指同一个方法在不同对象上有不同的实现,实现方法可以通过重载或重写实现。

示例代码:

public class Animal{
    public void run(){
        System.out.println("Animal is running...");
    }
}

public class Dog extends Animal{
    public void run(){
        System.out.println("Dog is running...");
    }
}

public class Cat extends Animal{
    public void run(){
        System.out.println("Cat is running...");
    }
}

在上述示例中,Animal、Dog、Cat均有自己的run方法,都可以通过调用同名方法实现多态。

二、面向对象的设计原则

1. 单一职责原则

一个类和方法只负责一项职责,避免出现类和方法的职责不明确、过于复杂的情况。

示例:

有一个类A,负责管理用户的增删改查、权限管理、日志记录等功能,这样就会导致该类过于庞大且难以维护。将该类拆分为UserManager、PermissionManager、LogManager等类,使每个类只负责一项职责,提高代码可读性和可维护性。

2. 开闭原则

开闭原则是指对扩展开放,对修改关闭。在程序修改时,尽量是通过添加新的代码来增加新的功能,而不是对原有代码进行修改。

示例:

有一个类A,需要支持不同的支付方式,原有代码只支持支付宝和微信支付,现需要添加银行卡支付方式。通过对类A进行扩展,在现有代码的基础上添加新的支付方式,而不是对支付方式进行修改。

3. 里氏替换原则

里氏替换原则是指子类对象可以替换父类对象进行使用,而程序不会出错或产生异常。

示例:

有一个父类Animal和两个子类Dog、Cat,在父类的方法中使用子类方法实现多态。如果在Dog子类中重写了父类方法,但是该方法产生了异常,通过里氏替换原则,调用该方法将不会产生异常,因为Dog子类替代了父类并继承了父类方法。

三、总结

面向对象是一种开发思想,Java作为一门面向对象的编程语言具有三大特性:封装、继承、多态。面向对象编程需要遵循一定的设计原则,如单一职责原则、开闭原则、里氏替换原则等。遵循这些原则可以提高代码可读性和可维护性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈java中OO的概念和设计原则(必看) - Python技术站

(0)
上一篇 2023年5月24日
下一篇 2023年5月24日

相关文章

  • JAVA字符串格式化-String.format()的使用

    下面为您详细讲解”JAVA字符串格式化-String.format()的使用”的完整攻略。 什么是字符串格式化? 在开发过程中,有时候我们需要将不同的数据格式化为字符串,以便我们更好地输出到控制台或文件中。例如,我们需要将日期、时间、数字等各种类型的数据格式化为字符串,然后再进行输出,这时候要用到字符串格式化功能。 Java中的字符串格式化 Java中的字符…

    Java 2023年5月26日
    00
  • Java Session验证码案例代码实例解析

    下面我将为你讲解Java Session验证码案例代码实例解析的完整攻略。 1. 概述 本文将介绍如何通过Java Session技术实现验证码功能。首先让我们了解一下什么是Java Session? Java Session是Web应用程序中的一种技术。Session指的是在服务器端保存的一个数据结构,用于存储客户端的会话信息。在服务器端,Session以…

    Java 2023年5月20日
    00
  • JavaSpringBoot报错“TypeMismatchException”的原因和处理方法

    原因 “TypeMismatchException” 错误通常是以下原因引起的: 参数类型不匹配:如果您的参数类型不匹配,则可能会出现此错误。在这种情况下,您需要检查您的参数类型并确保它们匹配。 参数格式不正确:如果您的参数格式不正确,则可能会出现此错误。在这种情况下,您需要检查您的参数格式并确保它们正确。 解决办法 以下是解决 “TypeMismatchE…

    Java 2023年5月4日
    00
  • java8新特性-Stream入门学习心得

    Java8新特性-Stream入门学习心得 什么是Stream Stream是Java8引入的一个新特性,它可以使我们更加方便地处理集合中的数据。Stream可以看做是一种高级版本的Iterator,它支持并行处理数据,并且提供了一组非常丰富的操作方法。 Stream的操作 下面介绍一下Stream的常用操作: 创建Stream Stream有几种不同的创建…

    Java 2023年5月26日
    00
  • Java笔记(15) Collection集合–>List集合

    集合的理解和好处数组一旦定义,长度即固定,不能修改。要添加新元素需要新建数组,然后循环拷贝,非常麻烦 集合可以动态保存任意多个对象,使用比较方便 提供饿了一系列方便的操作对象的方法:add、remove、set、get等 使用集合添加、删除新元素的示意代码,简洁明了 集合主要是两组(单列集合,双列集合)Collection 接口有两个重要的子接口,List …

    Java 2023年4月17日
    00
  • IntellJ IDEA神器使用技巧(小结)

    IntellJ IDEA神器使用技巧小结 前言 IntelliJ IDEA是目前最流行的Java集成开发环境之一,拥有便捷的界面、丰富的插件和强大的功能,可以帮助开发人员提高开发效率。本文将介绍一些IntelliJ IDEA的使用技巧。 技巧一:快捷键 IntelliJ IDEA提供了许多快捷键,可以帮助开发人员更快速地执行常用的操作。以下是一些常用的快捷键…

    Java 2023年5月26日
    00
  • Mybatis 中如何判断集合的size

    判断 Mybatis 中查询出来的结果集的 size 主要有以下几种方式: 判断查询结果是否为空 可以使用 Mybatis 自带的 isEmpty() 方法判断查询结果是否为空,与此相对地,还可以使用isNotEmpty() 方法判断结果是否不为空。例如: List<User> userList = userMapper.selectUserLi…

    Java 2023年5月20日
    00
  • JAVA读取文件流,设置浏览器下载或直接预览操作

    让我来详细讲解如何使用Java读取文件流并设置浏览器下载或直接预览操作。 1. 读取文件流 Java读取文件流可以使用java.io包中的FileInputStream类。该类提供了多种读取文件流的方式。 示例1:直接读取文件流 import java.io.File; import java.io.FileInputStream; import java.…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部