Java [ 基础 ] Java面向对象编程 (OOP) ✨

目录

✨探索Java基础  Java面向对象编程 (OOP) ✨

引言

1. 类和对象

2. 封装

3. 继承

4. 多态

5. 抽象

结论


✨探索Java基础  Java面向对象编程 (OOP) ✨

引言

Java是一门以面向对象编程(OOP)为基础的编程语言。OOP的核心概念包括类和对象、封装、继承、多态和抽象。

1. 类和对象

在Java中,是创建对象的蓝图,而对象是类的实例。类定义了对象的属性和行为。

示例:

class Person {
    // 属性
    String name;  // 姓名
    int age;      // 年龄

    // 方法
    void introduce() {
        System.out.println("我的名字是 " + name + ",我今年 " + age + " 岁。");
        // 输出介绍信息
    }
}

public class Main {
    public static void main(String[] args) {
        // 创建对象
        Person person = new Person();
        person.name = "张三";  // 设置姓名
        person.age = 30;       // 设置年龄
        person.introduce();    // 调用介绍方法
    }
}

2. 封装

封装是将对象的属性和方法私有化,并通过公共的方法(getter和setter)来访问和修改这些属性。这样可以保护数据不被随意修改。

示例:

class Person {
    // 私有属性
    private String name;  // 姓名
    private int age;      // 年龄

    // getter 方法
    public String getName() {
        return name;
    }

    // setter 方法
    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

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

    // 介绍方法
    void introduce() {
        System.out.println("我的名字是 " + name + ",我今年 " + age + " 岁。");
        // 输出介绍信息
    }
}

public class Main {
    public static void main(String[] args) {
        Person person = new Person();
        person.setName("李四");  // 设置姓名
        person.setAge(25);       // 设置年龄
        person.introduce();      // 调用介绍方法
    }
}

3. 继承

继承允许一个类(子类)继承另一个类(父类)的属性和方法,从而实现代码重用和扩展。

示例:

// 父类
class Animal {
    void eat() {
        System.out.println("动物正在吃东西。");
        // 动物吃食物
    }
}

// 子类
class Dog extends Animal {
    void bark() {
        System.out.println("狗在叫。");
        // 狗叫
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.eat();  // 调用父类的方法
        dog.bark(); // 调用子类的方法
    }
}

4. 多态

多态允许对象以多种形式出现,主要通过方法重载和方法重写实现。多态使得一个接口可以有不同的实现。

方法重载:同一个类中,方法名相同但参数不同。

方法重写:子类重新定义父类的方法。

示例:

 
// 方法重载
class MathOperations {
    // 整数相加
    int add(int a, int b) {
        return a + b;
    }

    // 浮点数相加
    double add(double a, double b) {
        return a + b;
    }
}

// 方法重写
class Animal {
    void sound() {
        System.out.println("动物发出声音。");
        // 动物发出声音
    }
}

class Dog extends Animal {
    @Override
    void sound() {
        System.out.println("狗在叫。");
        // 狗叫
    }
}

public class Main {
    public static void main(String[] args) {
        MathOperations math = new MathOperations();
        System.out.println(math.add(5, 3));      // 调用第一个 add 方法
        System.out.println(math.add(5.5, 3.5));  // 调用第二个 add 方法

        Animal animal = new Dog();
        animal.sound(); // 调用 Dog 类的 sound 方法
    }
}

5. 抽象

抽象通过定义抽象类和接口来提供一个框架,而具体的实现由子类完成。抽象类可以包含抽象方法和具体方法,接口只能包含抽象方法(Java 8 之后可以包含默认方法和静态方法)。

示例:

 
// 抽象类
abstract class Animal {
    abstract void sound(); // 抽象方法

    void eat() {
        System.out.println("动物正在吃东西。");
        // 动物吃食物
    }
}

class Dog extends Animal {
    @Override
    void sound() {
        System.out.println("狗在叫。");
        // 狗叫
    }
}

// 接口
interface AnimalBehavior {
    void move(); // 移动方法
}

class Cat implements AnimalBehavior {
    @Override
    public void move() {
        System.out.println("猫静静地移动。");
        // 猫静静地移动
    }
}

public class Main {
    public static void main(String[] args) {
        Animal dog = new Dog();
        dog.sound(); // 调用 Dog 类的 sound 方法
        dog.eat();   // 调用 Animal 类的 eat 方法

        AnimalBehavior cat = new Cat();
        cat.move(); // 调用 Cat 类的 move 方法
    }
}

结论

掌握面向对象编程 (OOP) 的核心概念是成为优秀Java程序员的关键。这些概念不仅有助于编写结构良好、易于维护和扩展的代码,还能提高程序的可读性和可重用性。希望这篇文章对你理解Java的OOP有所帮助!

觉得有用的话可以点点赞 (*/ω\*),支持一下。

如果愿意的话关注一下。会对你有更多的帮助。

每天都会不定时更新哦  >人<  。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/776531.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

做有一个有表情且会动的 Finder

作为一只合格的互联网巡回猎犬&#xff0c;今天给大家分享一个有趣且无聊的小工具&#xff0c;摸鱼发呆必备&#xff0c;可以说是一件「无用良品」了。 软件介绍 Mouse Finder 长的跟访达差不多&#xff0c;功能也一样&#xff0c;但有一个重要区别&#xff1a;眼睛会跟随鼠标…

YOLOv8数据集可视化[目标检测实践篇]

先贴代码,后面再补充解析。 这个篇章主要是对标注好的标签进行可视化,虽然比较简单,但是可以从可视化代码中学习到YOLOv8是如何对标签进行解析的。 下面直接贴代码: import cv2 import numpy as np import osdef read_det_labels(label_file_path):with open(labe…

DAY20-力扣刷题

1.填充每个节点的下一个右侧节点指针 116. 填充每个节点的下一个右侧节点指针 - 力扣&#xff08;LeetCode&#xff09; 方法一&#xff1a;层次遍历 class Solution {public Node connect(Node root) {if (root null) {return root;}// 初始化队列同时将第一层节点加入队列…

动手学深度学习(Pytorch版)代码实践 -循环神经网络-51序列模型

51序列模型 import torch from torch import nn from d2l import torch as d2l import matplotlib.pyplot as pltT 1000 # 总共产生1000个点 time torch.arange(1, T 1, dtypetorch.float32) x torch.sin(0.01 * time) torch.normal(mean0, std0.2, size(T,)) d2l.plot(…

【IT领域新生必看】Java编程中的神奇对比:深入理解`equals`与`==`的区别

文章目录 引言什么是操作符&#xff1f;基本数据类型的比较示例&#xff1a; 引用类型的比较示例&#xff1a; 什么是equals方法&#xff1f;equals方法的默认实现示例&#xff1a; 重写equals方法示例&#xff1a; equals与的区别比较内容不同示例&#xff1a; 使用场景不同示…

CSS position属性之relative和absolute

目录 1 参考文章2 五个属性值3 position:static4 position:relative&#xff08;相对&#xff09;5 position:absolute&#xff08;绝对&#xff09; 1 参考文章 https://blog.csdn.net/lalala_dxf/article/details/123566909 https://blog.csdn.net/WangMinGirl/article/deta…

番外篇 | 手把手教你如何去更换YOLOv5的检测头为IDetect | 源于RCS-YOLO

前言:Hello大家好,我是小哥谈。凭借速度和准确性之间的出色平衡,YOLO框架已成为最有效的目标检测算法之一。然而,在脑肿瘤检测中很少研究使用YOLO网络的性能。对此本文提出了一种基于RCS-YOLO的重新参数化卷积的新型YOLO架构。与YOLOv7相比,RCS-YOLO的精度提高了2.6%,推理…

MWC上海展 | 创新微MinewSemi携ME54系列新品亮相Nordic展台

6月28日&#xff0c; 2024MWC上海圆满落幕&#xff0c;此次盛会吸引了来自全球124个国家及地区的近40,000名与会者。本届大会以“未来先行&#xff08;Future First&#xff09;”为主题&#xff0c;聚焦“超越5G”“人工智能经济”“数智制造”三大子主题&#xff0c;探索讨论…

苹果电脑清理app垃圾高效清理,无需专业知识

在我们的日常使用中&#xff0c;苹果电脑以其优雅的设计和强大的功能赢得了广泛的喜爱。然而&#xff0c;即便是最高效的设备&#xff0c;也无法免俗地积累各种不必要的文件和垃圾&#xff0c;特别是app垃圾。所以&#xff0c;苹果电脑清理app垃圾高效清理&#xff0c;对于大多…

数据的存储方式——大小端序

大小端存储的故事源自于《格列佛游记》&#xff08;Gullivers Travels&#xff09;&#xff0c;这是爱尔兰作家乔纳森斯威夫特&#xff08;Jonathan Swift&#xff09;于1726年所著的一部讽刺小说。在其中&#xff0c;主人公格列佛&#xff08;Lemuel Gulliver&#xff09;游历…

三相感应电机的建模仿真(2)基于ABC相坐标系S-Fun的仿真模型

1. 概述 2. 三相感应电动机状态方程式 3. 基于S-Function的仿真模型建立 4. 瞬态分析实例 5. 总结 6. 参考文献 1. 概述 前面建立的三相感应电机在ABC相坐标系下的数学模型是一组周期性变系数微分方程&#xff08;其电感矩阵是转子位置角的函数&#xff0c;转子位置角随时…

【Python】基于KMeans的航空公司客户数据聚类分析

&#x1f490;大家好&#xff01;我是码银~&#xff0c;欢迎关注&#x1f490;&#xff1a; CSDN&#xff1a;码银 公众号&#xff1a;码银学编程 实验目的和要求 会用Python创建Kmeans聚类分析模型使用KMeans模型对航空公司客户价值进行聚类分析会对聚类结果进行分析评价 实…

面向物联网行业的异常监控追踪技术解决方案:技术革新与运维保障

在现代高度数字化和互联的环境中&#xff0c;物联网技术已经深入到我们生活的方方面面。特别是在家庭和工业环境中&#xff0c;物联网系列通讯作为连接各类设备的关键枢纽&#xff0c;其稳定性和可靠性显得尤为重要。本文将介绍一种创新的监控系统&#xff0c;旨在实时跟踪和分…

用Python轻松转换PDF为CSV

数据的可访问性和可操作性是数据管理的核心要素。PDF格式因其跨平台兼容性和版面固定性&#xff0c;在文档分享和打印方面表现出色&#xff0c;尤其适用于报表、调查结果等数据的存储。然而&#xff0c;PDF的非结构化特性限制了其在数据分析领域的应用。相比之下&#xff0c;CS…

DFS之剪枝与优化——AcWing 165. 小猫爬山

DFS之剪枝与优化 定义 DFS之剪枝与优化指的是在执行深度优先搜索(DFS, Depth-First Search)时&#xff0c;采取的一系列策略来减少搜索空间&#xff0c;避免无效计算&#xff0c;从而加速找到问题的解。剪枝是指在搜索过程中&#xff0c;当遇到某些条件不符合解的要求或者可以…

Day05-02-Jenkins-pipeline

Day05-02-Jenkins-pipeline 1. Jenkins-Pipeline概述1) pipeline? 2. pipeline格式3. 小试牛刀4. Java上线的项目4.1 流程汇总4.2 根据流程书写pipeline架构4.3 分步实现1&#xff09;拉取代码2&#xff09;检查,编译,部署 4.4 完整pipeline代码 5. 根据tag标签拉取代码(了解自…

FreeBSD@ThinkPad x250因电池耗尽关机后无法启动的问题存档

好几次碰到电池耗尽FreeBSD关机&#xff0c;再启动&#xff0c;网络通了之后到了该出Xwindows窗体的时候&#xff0c;屏幕灭掉&#xff0c;网络不通&#xff0c;只有风扇在响&#xff0c;启动失败。关键是长按开关键后再次开机&#xff0c;还是启动失败。 偶尔有时候重启到单人…

温州网站建设方案及报价

随着互联网的发展&#xff0c;网站建设已经成为企业推广和营销的重要手段。温州作为中国经济发达地区之一&#xff0c;各行各业企业纷纷意识到网站建设的重要性&#xff0c;纷纷加大网站建设工作的投入。那么&#xff0c;温州网站建设方案及报价是怎样的呢&#xff1f;下面我们…

深入理解C# log4Net日志框架:功能、使用方法与性能优势

文章目录 1、log4Net的主要特性2、log4Net框架详解配置日志级别 3、log4Net的使用示例4、性能优化与对比5、总结与展望 在软件开发过程中&#xff0c;日志记录是一个不可或缺的功能。它可以帮助开发者追踪错误、监控应用程序性能&#xff0c;以及进行调试。在C#生态系统中&…

C#运算符重载

1、运算符重载 运算符重载是指重定义C#内置的运算符。 程序员也可以使用用户自定义类型的运算符。重载运算符是具有特殊名称的函数&#xff0c;是通过关键字 operator 后跟运算符的符号来定义的。与其他函数一样&#xff0c;重载运算符有返回类型和参数列表。 2、在Box类中定义…