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

yizhihongxing

浅谈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获取时间的方法总结

    下面就是关于“java获取时间的方法总结”的详细攻略。 标题 介绍 在Java编程中,获取时间是非常常见的操作。本文将介绍Java中获取时间的方法,包括使用Java自带的类库和第三方类库。 使用Java自带的类库获取时间 Java自带了一个Date类,可以用于获取时间。 以下是获取当前时间的代码示例: import java.util.Date; publi…

    Java 2023年6月1日
    00
  • 详解Spring Data操作Redis数据库

    详解Spring Data操作Redis数据库 Redis是一种快速、开源的NoSQL数据库,它以键/值(key/value)存储数据,支持多种数据结构,包括字符串、哈希、列表、集合等。在应用程序开发中,连接Redis并进行数据操作是一个常见场景。Spring Data提供了对多种数据存储技术(包括Redis)的抽象和简化,同时还提供了常见的数据操作功能。下…

    Java 2023年5月20日
    00
  • Java使用Calendar类实现动态日历

    下面是关于使用Java中的Calendar类实现动态日历的攻略。 1. Calendar类简介 Calendar类是Java中的日期时间操作类,可以获取时间、修改时间、处理时间等操作。Calendar类位于java.util包中,用来处理日期和时间信息。它提供了与系统独立的方式操作日期和时间。您可以将Calendar的实例看作是一个时钟,它不仅知道当前的时间…

    Java 2023年5月20日
    00
  • C#桥接模式完整实例

    C#桥接模式是一种软件设计模式,旨在将抽象和实现分离开来,以便它们可以独立地进行变化和演化。在此模式下,一个抽象类在其内部维护一个实现类的引用,并将具体的实现委托给实现类。这样便可以在不改变抽象类结构的情况下,改变具体实现类。 下面我们采用一个“图形和颜色”系统作为示例,在这个系统中,“图形”和“颜色”是两个独立的概念,它们可以独立从抽象和实现上进行扩展,并…

    Java 2023年5月19日
    00
  • Java+Ajax实现的用户名重复检验功能实例详解

    下面是关于“Java+Ajax实现的用户名重复检验功能实例详解”的完整攻略。 1. 概述 本篇攻略主要介绍如何使用Java和Ajax技术实现一个用户名重复检验功能。在用户填写用户名时,系统会自动检测该用户名是否已经被占用,如果已经被占用,则会提示用户重新填写。 2. 实现步骤 2.1 创建数据库 使用MySQL数据库,创建一个名为user的表,表中包含如下字…

    Java 2023年6月15日
    00
  • JSP实现客户信息管理系统

    下面是“JSP实现客户信息管理系统”的完整攻略: 1. 设计数据库 首先需要设计数据库,数据库中应包含客户信息的各种属性,例如客户编号(id)、姓名(name)、性别(gender)、年龄(age)、联系方式(phone)等等。 2. 搭建环境 安装JDK、IDE和Tomcat服务器。在IDE中创建一个Web项目,使用Maven来管理项目依赖。在项目中依次创…

    Java 2023年6月15日
    00
  • spring AOP的After增强实现方法实例分析

    Spring AOP的After增强实现方法实例分析 在Spring框架中,After增强是在被代理方法执行后执行的增强。在该增强中,我们可以对被代理方法的返回结果进行处理,或者进行资源清理等操作。本文将讲解Spring AOP的After增强实现方法,并提供两个实例来说明。 After增强定义 After增强是在被代理方法执行后执行的增强,它可以处理被代理…

    Java 2023年5月31日
    00
  • 解析SpringBoot整合SpringDataRedis的过程

    解析SpringBoot整合SpringDataRedis的过程,需要经过以下步骤: 步骤一:添加Redis的依赖 在pom.xml文件中添加以下依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boo…

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