面向对象编程的四个基本特性(抽象、封装、继承及多态)以及示例

面向对象-抽象性思想(知识整理) 哲学思辨与现世应用层 从世界观的角度可以认为:面向对象的基本哲学是认为世界是由各种各样具有自己的运动规律和内部状态的对象所组成的;不同对象之间的相互作用和通讯构成了完整的现实世界。因此,人们应当按照现实世界这个本来面貌来理解世界,直接通过对象及其相互关系来反映世界。这样建立起来的系统才能符合现实世界的本来面目。 从方法学的角度可以认为:面向对象的方法是面向对象的世界观在开发方法中的直接运用。它强调系统的结构应该直接与现实世界的结构相对应,应该围绕现实世界中的对象来构造系统,而不是围绕功能来构造系统。 阅读详情
AI摘要

本文深入探讨面向对象编程的四大核心特性:抽象、封装、继承和多态。通过具体示例,阐述每个特性如何帮助软件设计更加模块化、可复用和灵活。

    面向对象的四个基本特性是,抽象、封装、继承以及多态。

1. 抽象

    抽象就是忽略关注主题与当前目标无关的信息,以便更关注于与当前目标有关的信息。抽象并不打算了解全部问题,而只关注于主题相关性较大的部分,且暂时不用关注部分细节。

    抽象包括两个方面,一是过程抽象,二是数据抽象。过程抽象,关注于目标的功能是什么,而不是功能是怎么实现的。数据抽象,关注于提取目标的特性信息。

    举例,若是做一个学生信息管理系统,该系统的目标对象是学生,则需要对学生这个目标对象进行抽象。过程抽象,学生的主要责任就是学习。数据抽象,关注于学生这个角色的时候,相较于身高、体重或者皮肤颜色,我们更应该关注的是学生的学校、班级、学号以及成绩。

2.封装

   封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别。

   封装的优点,良好的封装能够减少耦合;类内部的结构可以自由修改;可以对成员变量进行更精确的控制;隐藏信息,实现细节。例如,对于学生这个目标对象进行封装,首先将学生的属性值进行访问级别(外部可见性,一般使用private进行属性隐藏)控制,并决定是否提供属性查询或修改的方法,然后决定向外公开接口study方法。代码示例如下,

    @Test
    public void encapsulationTest(){
        Student student = new Student("Jerome",14,"2年2班");
        student.setClassName("3年2班"); // 调用className属性的修改方法
        System.out.println("Name: "+student.getName()+" \nAge: "+student.getAge()+"\nClassName: "+student.getClassName());
        student.study(); // 调用study方法
    }


    class Student {
        private String name;  //private 私有属性,只能类内访问。类外只能通过getName方法查询该属性值,而并没有提供修改方法。
        private Integer age;
        private String className; // 该属性,提供了getClassName和setClassName两个方法,外部调用可以查询及修改该属性。
        public Student(){} // 无参构造器
        public Student(String name, Integer age, String className){ // 提供有参构造器
            this.name = name;
            this.age =age;
            this.className = className;
        }
        public String getName() {
            return name;
        }
        public Integer getAge() {
            return age;
        }
        public String getClassName() {
            return className;
        }
        public void setClassName(String className) {
            this.className = className;
        }

        public void study(){
            System.out.println("Studying.");
        }
    }

执行结果,


Name: Jerome 
Age: 14
ClassName: 3年2班
Studying.


3. 继承

    继承,即子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

    示例,添加一个Person类,让Student类继承Person类

    @Test
    public void extendsTest(){
        Student student = new Student("Jerome",14,"2年2班");
        student.setSex("male");  // 继承了Person类的属性以及方法
        System.out.println("Name: "+student.getName()+" \nAge: "+student.getAge()+"\nSex: "+student.getSex()+"\nClassName: "+student.getClassName());

        student.study(); // Student类的study方法
        student.talking(); // 继承了Person类的talking和eat方法
        student.eat();
    }


    class Student extends Person{
        private String name;  //private 私有属性,只能类内访问。类外只能通过getName方法访问该属性值。
        private Integer age;
        private String className; // 该属性,提供了getClassName和setClassName两个方法,外部调用可以查询及修改该属性。
        public Student(){} // 无参构造器
        public Student(String name, Integer age, String className){ // 提供有参构造器
            this.name = name;
            this.age =age;
            this.className = className;
        }
        public String getName() {
            return name;
        }
        public Integer getAge() {
            return age;
        }
        public String getClassName() {
            return className;
        }
        public void setClassName(String className) {
            this.className = className;
        }

        public void study(){
            System.out.println("Studying.");
        }
    }

    class Person {
        private String sex;
        public String getSex() {
            return sex;
        }
        public void setSex(String sex) {
            this.sex = sex;
        }

        public void eat(){
            System.out.println("Eating.");
        }
        public void talking(){
            System.out.println("Talking.");
        }
    }

结果显示,


Name: Jerome 
Age: 14
Sex: male
ClassName: 2年2班
Studying.
Talking.
Eating.


4. 多态

多态,即同一个行为具有多个不同表现形式或形态的能力。

表现形式为,子类重写父类方法,实现类实现接口方法,子类重写抽象类方法。

 示例,子类Teacher和Worker重写了父类Person的eat方法,

    @Test
    public void polymorphismTest(){
        Person teacher = new Teacher();
        Person worker = new Worker();

        show(teacher);  // 同样的方法,不同的实例,将会执行不同的内容
        show(worker);
    }

    private void show(Person person){  // 参数为父类Person类
        person.eat();  // 调用父类的eat方法
    } 

    class Teacher extends Person {
        @Override
        public void eat() {
            System.out.println("教师在吃饭。");
        }
    }

    class Worker extends Person {
        @Override
        public void eat() {
            System.out.println("工人在吃饭。");
        }
    }

执行结果


教师在吃饭。
工人在吃饭。


 

面向对象编程之继承、多态、封装、抽象类、接口、包-上 面向对象编程之继承、多态、封装、抽象类、接口、包继承类的继承格式为什么要继承继承的特点继承的种类及关键字访问权限多态向上转型动态绑定方法重写重写和重载的区别比较多态的优点封装实现Java的封装封装的优点抽象类抽象类及其实现抽象方法抽象类使用的注意事项接口接口的声明接口的特性抽象类和接口的区别接口与类的区别包包的语法格式和导入包的作用欢迎指正???? 继承 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。 类的继承格式 在 Jav 阅读详情

相关推荐

Java的面向对象编程概念:封装、继承、多态和抽象

抽象是指将对象的复杂实现细节隐藏起来,只暴露出简单的接口。抽象类和接口是Java中实现抽象的两种主要方式。抽象类是不能被实例化的类,通常包含抽象方法(没有方法体的方法),具体子类必须实现这些抽象方法。接口是一种更高级的抽象,规定了一组方法,但不包含任何实现。// 抽象类// 抽象方法// 普通方法System.out.println("动物的名字是: " + name);// 具体子类@OverrideSystem.out.println("猫叫:喵喵");在上述代码中,

私聊前往站内信:https://i.youkuaiyun.com/#/msg/chat/weixin_44976692 1万+

07-面向对象基础 (抽象)

Java面向对象--抽象

yc_Cabbage的博客 1312

LoRaWAN数据包分析工具

前言:LoRaWAN的射频数据包是加密的,而且有些字段是某个字节的某几位,看着不是那么直观,因此在某些情况下需要借助工具来分析数据包。 1、安装npm 这个工具是用JavaScript写的,其中用到了一些依赖库,而npm就可以一次性把这些依赖库下载下来,因此我们先要下载安装npm这个工具。 安装:sudo apt install npm 输入y,等待安装完成: 检查是否安装成功:npm -v 说明安装完成。 2、安装LoRa数据包分析工具lora-packet 安装:npm i.

freemote的博客 4630

面向对象——抽象

果酱18:20:57 4.1抽象类 编写-个类时,为该类定义-些方法,这些方法用于描述该类的行为方式,这些方法都有具体的方法体,但在某些情况下,某个父类仅知道其子类应该包含哪些方法,却无法准确地知道子类实现这些方法的细节。如定义-个图形类(Shape)作为诸如三角形、菱形以及矩形等图形的父类,在该父类中定义calcPerimeter()方法,该方法用于计算图形的周长,但不同的子类图形计算周长的方式大相径庭,所以导致Shape类的calcPerimeter()方法无法运用某个固定的计算图形周长的公式...

weixin_57463832的博客 2313

本地化搭建DeepSeek+RAGFlow,构建个人知识库

本地化搭建DeepSeek+RAGFlow,构建个人知识库。至少32G以上内存、500G以上空余磁盘空间。

gogospecter的专栏 7427

四大厂商网络设备巡检命令实战指南:华为、华三、锐捷、思科

本文详细介绍了华为、华三、锐捷、思科四大厂商网络设备的巡检命令实战指南,涵盖硬件状态、软件运行和网络功能等核心维度。通过具体命令示例和实用技巧,帮助网络工程师高效完成设备巡检,预防潜在故障,确保网络稳定运行。

weixin_29235923的博客 391

面向对象—抽象

1.抽象类 回想一下前面学习过的猫狗案例,我们提取出了一个动物类,这个时候我们可以通过Anima a = new Animal();来创建一个动物类对象。其实这个是不对的,因为我说一个动物,你不知道我说的哪个动物,只有看到了具体的动物才知道这是什么动物,所以动物本身并不是具体的一个事物,而是一个抽象的事物。只有真正的例如:猫、狗;它们才是具体的事物,所以说我们前面的设计是有问题的。同理我们也可以想一想不同的动物它吃的是不同的食物,所以呢我们也不应该在动物类中给出具体的吃的方法实现,只应该给出一个吃的方法声

weixin_67796933的博客 907

VLA-JEPA:具身智能中潜空间世界模型的工程落地实践

世界模型是具身智能实现环境理解与因果推演的核心基础,其本质是在状态空间中建模‘动作→结果’的动力学规律。传统基于像素或文本的世界模型因高维、非平稳、弱语义等缺陷,在真实机器人场景中鲁棒性差、部署成本高。JEPA(联合嵌入预测架构)通过构建物理约束的潜空间,将视觉-语言-动作(VLA)信号统一编码为低维、可微、可解释的状态表征,显著提升模型对抖动、遮挡、光照突变等干扰的适应能力,并支持实时闭环控制。该范式已在UR5e、Franka等多构型机械臂及Jetson边缘平台完成实测验证,成为VLA系统从实验室走向产线

weixin_34357928的博客 336

深度理解面向对象的基础-抽象(一)

前言: 面向对象这个词对于我们程序开发人员来说,应该都不陌生,我们总说开发要面向对象,但实际上在编写代码的过程中,很多人虽然实现了封装、继承、多态但却不是面向对象的程序设计,而是面向过程的实现逻辑,徒有面向对象的形,却没有面向对象的魂。 今天我们首先来深度理解一下面向对象的基础——抽象!!! 1、面向对象的三大特征是什么? 封装、继承、多态 2、面向对象的基础是什么? 抽象 3、为什么说面向对象的基础是抽象? 什么是抽象?抽象就是把事物的信息细节进行提炼、抽象,找到事物的本质和重要属性,以求

Ariel_欢 2313

初识 QML

QML 是一种声明性语言,允许根据用户界面的可视组件以及它们如何相互交互和相互关联来描述用户界面。QML 是一种高度可读的语言,旨在使组件能够以动态方式互连,并且允许组件在用户界面中轻松重复使用和自定义。 使用 Qt Quick,开发人员可以轻松地在 QML 中构建流体动画用户界面,并且可以选择将这些用户界面连接到任何后端 C++ 库。

青春不老,奋斗不止! 1万+

Windows 11 安装 JDK 11:下载、安装、配置环境变量、验证

本文详细介绍了在 Windows 11 系统中安装 JDK 11 的完整流程,包括从 Oracle 官网下载压缩包、解压到自定义目录、配置 JAVA_HOME 与 Path 环境变量,并验证安装是否成功。文章还包含一个专为 JDK 11 新特性设计的测试程序,涵盖 Lambda 表达式 var 语法、HTTP 客户端 API、字符串增强方法等,帮助读者确认安装版本正确无误,适合初学者和需要多版本 JDK 共存的开发者参考。

寒水馨 · 轻量级技术文档 · hanshuixin.org 2779

面向对象编程的四大特性详解:封装、继承、多态与抽象

抽象是指从一类事物中提取共性特征,隐藏实现细节,仅保留对外功能定义。fill:#333;color:#333;color:#333;fill:none;面向对象特性 OOP封装 Encapsulation继承 Inheritance多态 Polymorphism抽象 Abstraction隐藏实现细节通过方法对外访问数据子类复用父类功能代码更少更清晰同一接口多种实现父类引用指向子类对象定义共性行为使用 abstract/interface 实现。

m0_73748193的博客 1584

【100分】最长子字符串的长度

题目要求在一个环形字符串中找出字符 ‘o’ 出现了偶数次的最长子字符串长度。这里的字符串是一个环形的,即首尾相连。代码统计了字符串中字符 ‘o’ 的出现次数,并根据其奇偶性返回相应的最长子字符串长度。当 ‘o’ 的数量为偶数时,直接返回字符串长度;当 ‘o’ 的数量为奇数时,返回长度减去 1。给你一个字符串 s,字符串s首尾相连成一个环形 ,请你在环中找出 ‘o’ 字符出现了偶数次最长子字符串的长度。【最长子字符串的长度】

weixin_54707168的博客 896

JAVA面向对象四大特性:多态、继承、抽象、封装

一、多态(晚绑定;运行时;一个接口,多种实现)面向对象的四大特性:封装、继承、多态、抽象。从一定角度来看,封装和继承几乎都是为多态而准备的。是最重要的知识点。多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其...

二一点 1万+

【Claude】Not logged in · Please run /login 报错已解决

意味着 Claude Code 没有找到任何有效凭证。直接/login——交互式首选;检查——排查环境变量污染;CI 用——自动化场景标准方案;macOS Keychain 异常——/logout/login重置;时钟偏差——校准系统时间。参考:Claude Code 官方《错误参考》"身份验证"章节、官方认证优先级文档、社区 Token 过期排查记录。

博客 9979

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

封装,继承,多态,抽象

封装复杂性:通过隐藏不必要的细节,只暴露必要的接口,简化程序的复杂度。代码复用:通过继承和多态,减少冗余代码,提高代码的可维护性和可扩展性。抽象思维:将问题抽象化,避免过度关注细节,专注于系统的高级结构和行为。这些特性让面向对象编程成为现代软件开发中最重要和广泛使用的编程范式之一。

qq_54532893的博客 1067

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Java的四个基本特征(抽象,封装,继承,多态)

java的四个基本特征是很容易开始面试的点,如果问的是三大属性,那么是封装,多态,继承,如果问的是四大特征,那么分别是抽象,封装,多态,继承。 1.抽象 抽象:将相同的类的共同特征总结出来,构造成类的过程。包括数据抽象以及行为抽象。数据抽象变成类的成员变量,行为抽象变成类的成员函数。抽象只关心成员变量以及成员函数,并不关系具体的实现细节。 下面是Person.class,表示与人...

秦怀杂货店 7068

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

三、面向对象特性(封装、继承、多态、抽象)

类的访问权限修饰符为public类种必须明确定义公有的无参构造器类中所有的成员字段(除常量以外)必须使用private作为访问权限修饰符类种必须明确定义所有成员字段的公有的get/set方法父子类的共性方法,在父类中定义的操作不能满足子类的需求时,需要在子类中对该方法进行重新定义,称之为重写同一类的对象指向不同的引用public abstract class 类名{成员字段构造器成员方法public abstract 返回值类型 方法名([参数列表]);//抽象方法。

2403_84497397的博客 1928

类的四大特性:封装、继承、多态、抽象

知识不是一次获取的成果,而是反复回望、不断打磨的结晶

weixin_45097241的博客 914

C++的特性(封装、继承、多态、抽象)的详解

c++四/三个特性的详解,各个部分

用来自己学习,复习 3983

封装、继承、多态、抽象

封装、继承、多态 1.封装: 封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。(信息隐藏或数据访问保护) 属性可用来描述同一类事物的特征,方法可描述一类事物可做的操作。封装就是把属于同类事务的共性(属性和方法)归到一个类中,以方便使用。 面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口(可以想想普通洗衣机和全自

林帆的博客 2775

java面向对象的四大特性-多态,继承,抽象,封装

1.多态 面向对象的四大特性:封装、继承、多态、抽象。从一定角度来看,封装和继承几乎都是为多态而准备的。是最重要的知识点。多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法

basycai的博客 1万+

面向对象编程的四大基石:抽象、多态、继承、封装

面向对象编程的四大基石:抽象、多态、继承、封装

一起coding,一起嗨。 1402

C++面向对象编程特性(封装、抽象、继承、多态)

面向对象编程是一种编程范式或编程风格。它以类或对象作为组织代码的基本单元,并将封装、抽象、继承、多态四个特性,作为代码设计和实现的基石 。

bx1091182836的博客 1436

面向对象编程基础:封装、继承、多态与抽象的全面解析

本文深入介绍了面向对象编程的基础知识,包括封装、继承、多态和抽象四大特性。通过清晰的示例代码和解释,讲解了这些概念的作用和用法。同时,还涵盖了类与对象的定义、创建和方法调用等内容。对于想要深入理解面向对象编程的读者来说,本文将提供全面的指导。无论是初学者还是有一定经验的开发人员,都能从中受益并提升自己的编程能力。

qq_41308872的博客 7219

全面深入解析Java面向对象编程:继承、多态、抽象类、封装、接口与反射

Java是一门典型的面向对象编程语言,其核心特性包括继承、封装、多态和抽象,通过这些特性实现代码的模块化、可扩展性和复用性。Java还引入了接口以支持多继承的特性,并通过反射提供了对程序结构和行为的动态访问能力。本篇文章详细讲解Java面向对象编程的基础概念、原理、应用场景和常见操作,结合实例代码和表格展示,帮助初学者系统掌握Java面向对象的设计思想和实际应用。

qq_45832651的博客 1344
上一篇: Java异常捕获(单级、多级)-try、catch、finally以及其执行顺序
下一篇: Java多线程-实现Runnable接口run方法,示例
小鸡炖蘑菇Plus版
博客等级 码龄10年 10粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值