0

0

了解面向对象编程 (OOP)

PHPz

PHPz

发布时间:2024-08-25 21:07:18

|

1268人浏览过

|

来源于dev.to

转载

了解面向对象编程 (oop)

面向对象编程(oop)是 java 中的一个基本概念,它使创建模块化、可重用和可扩展的代码变得更加容易。在这篇文章中,我们将探讨 oop 的核心原则,例如类、对象、继承、封装、多态性和抽象。

1.面向对象编程简介

oop 是一种基于“对象”概念的编程范例,它可以包含数据和操作该数据的方法。通过将代码组织成对象,您可以创建更易于管理且更易于理解的程序。

oop 的四个关键原则是:

  • 封装
  • 传承
  • 多态性
  • 抽象

让我们在 java 的上下文中探索每个概念。

2.类和对象

2.1 什么是类?

java中的类是创建对象的蓝图。它定义了从类创建的对象将具有的属性(字段)和行为(方法)。将类视为概述对象的结构和功能的模板。

班级示例:

public class car {
    // fields (attributes)
    string mark;
    string model;
    int year;

    // method (behavior)
    void startengine() {
        system.out.println("engine started.");
    }
}

在这个例子中,car类有3个字段:mark、model、year,以及一个方法startengine()。

2.2 什么是对象?

对象是类的实例。定义类后,您可以从中创建多个对象,每个对象都有自己唯一的字段值。

创建对象的示例:

public class main {
    public static void main(string[] args) {
        // creating an object of the car class
        car mycar = new car();

        // setting field values
        mycar.mark = "toyota";
        mycar.model = "corolla";
        mycar.year = 2021;

        // calling a method
        mycar.startengine();  // outputs: engine started.
    }
}

在此示例中,mycar 是 car 类的一个对象,并为其字段分配了特定值。

挑战1:
创建一个名为 book 的类,其中包含标题、作者和页码字段。创建 book 类的对象,设置其字段,并打印出书籍的详细信息。

3.封装

封装是将数据(字段)和对数据进行操作的方法捆绑到单个单元或类中,并限制对某些对象组件的访问的做法。这是使用访问修饰符(私有、公共、受保护)来实现的。

封装有助于保护对象的内部状态免受意外干扰和误用。

封装示例:

public class person {
    // private fields
    private string name;
    private int age;

    // public methods to access private fields
    public string getname() {
        return name;
    }

    public void setname(string newname) {
        name = newname;
    }

    public int getage() {
        return age;
    }

    public void setage(int newage) {
        if (newage > 0) {
            age = newage;
        }
    }
}

在此示例中,person 类通过将其字段设置为私有来封装其字段,并提供公共方法(getname、setname、getage、setage)来访问和修改这些字段。

EasyCart开源网店系统
EasyCart开源网店系统

Easycart是一款专业的电子商务网站程序,为各大企业提供最适合的电子商务网络销售网站前后台方案。Easycart是Easycart开发团队通 过对现代电子商务以及消费者购物方式进行深入研究,充分了解企业以及消费者的需求后研发的现代电子商务行业使用的程序。面向不同的企业品牌、代理商提出了 不同的方案,用户可根据企业自身特点,调整后台设置,创建最适合自己的网店模版。易学、易用、易管理、易推广,高效

下载

挑战2:
通过将字段设为私有并为每个字段创建公共 getter 和 setter 方法,为 book 类添加封装。

4.传承

继承是一种允许一个类继承另一个类的属性和方法的机制。继承的类称为“子类”或“子类”,继承的类称为“超类”或“父类”。

继承提高了代码的可重用性,并在类之间建立了自然的层次结构。

继承示例:

// superclass
public class animal {
    void eat() {
        system.out.println("this animal is eating.");
    }
}

// subclass
public class dog extends animal {
    void bark() {
        system.out.println("the dog is barking.");
    }
}

public class main {
    public static void main(string[] args) {
        dog mydog = new dog();
        mydog.eat();  // inherited method from animal class
        mydog.bark(); // method from dog class
    }
}

在这个例子中,dog类继承了animal类的eat方法,并且也有自己的方法bark。

挑战3:
创建一个继承自 book 类的子类 ebook。添加新字段 filesize 和方法 download() 到 ebook 类。

5.多态性

多态允许不同类的对象被视为公共超类的对象。可以通过方法重写和接口来实现。

5.1 方法重写

方法重写允许子类提供其超类中已定义的方法的特定实现。

多态性示例:

public class animal {
    void sound() {
        system.out.println("this animal makes a sound.");
    }
}

public class cat extends animal {
    @override
    void sound() {
        system.out.println("the cat meows.");
    }
}

public class main {
    public static void main(string[] args) {
        animal myanimal = new cat(); // polymorphism
        myanimal.sound();  // outputs: the cat meows.
    }
}

在这个例子中,尽管 myanimal 是 animal 类型,但它引用的是 cat 类型的对象,并且调用了 cat 重写的 sound 方法。

挑战4:
重写 book 类中的 tostring 方法以返回书籍详细信息的字符串表示形式。

6.抽象

抽象涉及隐藏系统复杂的实现细节并仅公开必要的部分。可以使用抽象类和接口来实现。

6.1 抽象类

抽象类无法实例化,并且可能包含必须由子类实现的抽象方法(没有主体的方法)。

抽象示例:

abstract class Shape {
    abstract void draw();  // Abstract method
}

public class Circle extends Shape {
    @Override
    void draw() {
        System.out.println("Drawing a circle.");
    }
}

public class Main {
    public static void main(String[] args) {
        Shape myShape = new Circle();
        myShape.draw();  // Outputs: Drawing a circle.
    }
}

在这个例子中,shape是一个抽象类,有一个抽象方法draw,它是由circle类实现的。

挑战5:
使用抽象方法 poweron 创建一个抽象类 device。创建一个实现 poweron 方法的 smartphone 子类。

7.总结

在这篇文章中,我们探讨了 java 中面向对象编程的关键概念:类、对象、继承、封装、多态性和抽象。理解这些原则对于构建复杂且高效的 java 应用程序至关重要。

请随意尝试提供的示例和挑战。如果您有任何疑问或需要进一步说明,请在下面发表评论!

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
go语言 面向对象
go语言 面向对象

本专题整合了go语言面向对象相关内容,阅读专题下面的文章了解更多详细内容。

58

2025.09.05

java面向对象
java面向对象

本专题整合了java面向对象相关内容,阅读专题下面的文章了解更多详细内容。

63

2025.11.27

java多态详细介绍
java多态详细介绍

本专题整合了java多态相关内容,阅读专题下面的文章了解更多详细内容。

27

2025.11.27

java多态详细介绍
java多态详细介绍

本专题整合了java多态相关内容,阅读专题下面的文章了解更多详细内容。

27

2025.11.27

java多态详细介绍
java多态详细介绍

本专题整合了java多态相关内容,阅读专题下面的文章了解更多详细内容。

27

2025.11.27

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

760

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

221

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1566

2023.10.24

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

3

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
SQL 教程
SQL 教程

共61课时 | 4.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号