【从C++到Java一周速成】章节10:封装、继承、方法的重写、多态

面向对象思想的基本概念----封装-继承-多态 文章目录与面向过程的区别解释一封装继承多态性解释二封装继承多态性 与面向过程的区别 面向对象 (Object Oriented,OO) 的思想对软件开发相当重要,它的概念和应用甚至已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD 技术、人工智能等领域。面向对象是一种 对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。 面向过程 (Procedure Oriented) 是一种 以过程为中心 的编程思想。这些都是以什么正在发 阅读详情

【1】封装

1.高内聚,低耦合

  • 高内聚:类的内部数据操作细节自己完成,不允许外部干涉;
  • 低耦合:仅对外暴露少量的方法用于使用。

隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可拓展性、可维护性,提高程序的安全性,这就是封装性的设计思想。

2.代码层面的体现

以属性为案例进行封装(方法也可以封装):

  1. 权限修饰符:将属性私有化,被private修饰
  2. 提供public修饰的方法让别人访问使用
  3. 外界通过方法来使用属性是受到程序员的制约的,不能随意访问使用属性

ps:可以利用IDEA快捷键生成:alt+insert–>Getter and Setter

【2】继承

在这里插入图片描述
类是对对象的抽象,而继承是对类的抽象(从一些类抽取出相同的东西,抽象出一个父类)

Java中继承语法格式:子类extends父类

public class Student extends Person{
}

继承的好处;

  1. 提高了代码的复用性
  2. 便于代码的扩展
  3. 是多态使用的前提

【3】方法的重写

子类可以对父类的方法进行重写,与C++相同

方法的重写有严格的格式要求:
子类的方法名、参数列表(个数、类型、顺序)要完全跟父类一致

重写和重载的区别:

  • 重载:在同一个类中,方法名相同,形参列表不同,多个方法构成重载。
  • 重写:在不同类中,子类不想直接使用从父类继承的方法,而要进行重写。

【4】多态

不用根据不同动物写不同的重载方法play,只需要将Cat、Dog的父类Animal作为对象参数;
shout是Animal都有的行为,在Cat、Dog里重写shout方法;

public class Animal {
    public void shout(){
        System.out.println("shout");
    }
}
public class Cat extends Animal {
    public void shout() {
        System.out.println("miao");
    }
}
public class Dog extends Animal{
    public void shout(){
        System.out.println("wang");
    }
}
public class Girl {
    public void play(Animal a){
        a.shout();
    }
}
public class main {
    public static void main(String[] args) {
        Girl g=new Girl();
        Animal a=new Animal();
        Dog d=new Dog();
        Cat c=new Cat();
        g.play(a);
        g.play(c);
        g.play(d);
    }
}
  • 多态的三要素:继承、重写、父类引用指向子类对象
  • 多态的好处:提高代码扩展性
java的jni方式调用C++封装的库文件 这个是我自己总结的,非常详细,每一个地方都有截图说明。之前网上看过很多,都不够细。我和同事花了三天时间成功实现java调用c++封装的dll库文件。就自己总结了一下,和大家分享。新手上路,如有错误请多见谅,请多多指出! 立即下载

相关推荐

HALCON实战:用两个工业相机实现无缝大视野拼接(附完整代码与避坑指南)

本文详细介绍了使用HALCON软件实现双工业相机图像无缝拼接的完整解决方案,涵盖硬件配置、相机标定、坐标系转换和图像拼接等关键步骤。通过高精度标定和矩阵变换技术,可构建大视野检测系统,适用于液晶面板、PCB等工业检测场景,显著提升检测效率和精度。

weixin_29050513的博客 191

Android JNI : Java封装C++

Java封装C++ 将C++类 和 Java类对等起来 实例化一个Java对象就相当于实例化了一个C++对象 实现原理 指针实质上也是个int或long(视平台而定)类型的变量 在jni方法中实例化c++对象后 返回给java方法 并转化为long变量 java方法根据这个得到的long型'句柄' 可以做一系列的对某个C++对象的操作 包括申请 释放等等 C++: class te

sliver.chen的博客 1292

详解modbus TCP通讯,并利用其实现欧姆龙PLC和西门子PLC的通讯

大家好,之前需要更新的MQTT通讯【2】因为硬件不足还不能发布出来,但最近在项目中涉及到西门子和欧姆龙之间的modbus TCP通讯,想到modbus TCP通讯是个非常常见并广泛使用的通讯协议,今天就结合最近做的测试给大家好好讲解一下,先提示一下,这边只给大家讲解如何实现,至于报文是什么,如何用socket来编写功能块或dll这边不会讲解,这块我会根据私信的小伙伴数量来考虑要不要出一篇如何用ST语言来编写modbus TCP功能块的博客。

dy186187的博客 1万+

java调用C++的封装库

用jna调用liunx的.so库。或者windows的.dll库 pom增加jna引用包: <dependency> <groupId>com.sun.jna</groupId> <artifactId>jna</artifactId> <version>3.0.9</version> </dependency> 引用完成,把对应的.so或者.dll库放到系统文件目录。liunx的目录是:/us

tororo_cat的博客 1332

小曾WRF自学日记(3)渐入佳境 ——WRF实例-数据下载与WPS前处理

ww

weixin_46297571的博客 1480

OpenCV实战:用C++和Python实现亚像素边缘检测(附完整代码)

本文详细介绍了使用OpenCV实现亚像素边缘检测的技术,通过C++和Python双语言代码解析,提升工业测量和医学影像中的检测精度。文章涵盖算法原理、核心实现步骤及工业应用案例,帮助开发者掌握亚像素精度处理技术,解决高精度场景中的边缘检测难题。

beer8的博客 375

C/C++开发,将c++静态库实现二次封装供java调用

JNI是Java Native Interface的缩写,中文为JAVA本地调用。使用JNI可以很方便的用我们的Java程序调用C/C++程序

技术需要分享 7745

吉比特-笔试

1. 题一:打雷后下雨的概率是80%,而打闪电后下雨的概率是70%,那么即打雷又打闪电后下雨的概率是多少?   答:打雷后下雨和打闪电后下雨都是独立事件,P=1-又打雷又闪电但没下雨的概率= 1 - 0.2 *0.3 = 94%        题二:打雷后下雨的概率是80%,但是没打闪电后下雨的概率是20%,那么打雷了但没打闪电后下雨的概率是多少?答:P=0.8 *0.2 / ( 0.8 *0

naturism的专栏 2496

java c++ 封装

java public 可以任意访问 protected 同一个包中可以访问及其子类可以访问 private 只有自己可以访问 前面不加表示默认,即private c++ c++没有包,其余和Java差不多

diary_chao的博客 318

AUTOSAR Dem模块实战配置:从理论到代码生成的完整指南

本文提供了一份AUTOSAR Dem模块从理论到代码生成的完整实战配置指南。文章详细拆解了配置流程,涵盖Dem模块的核心角色、通用骨架搭建、事件与DTC映射、消抖机制配置,以及与BswM、EcuM、DCM等模块的联调方法,旨在帮助汽车电子工程师快速掌握诊断事件管理的关键配置步骤,生成可运行的代码。

3c4x5z6v7b的博客 455

Transformer实战(40)——Transformer时间序列数据建模

Transformer 因其在自然语言处理 (Natural Language Processing, NLP) 任务中的优异表现而被广泛应用,其主要优势在于能够有效建模时间序列数据。这些数据可以是文本,也可以是非文本。本节将介绍如何使用 Transformer 进行时间序列数据建模和预测,将学习时间序列的基本概念,并在此基础上使用一个简单的模型,用以初步了解时间序列数据,并为各种预测任务奠定基础。

盼小辉丶的博客 2357

超详细带你了解Java中的多态

1.多态 文章目录1.多态多态概述虚函数重写多态的实现方式方式一:重写:方法的重写规则方式二:接口方式三:抽象类和抽象方法4.多态的转型6. instanceof关键字 多态概述 简单概述:同一个对象,在不同时刻表现出来的不同形态 多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量到底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。 因为在程序运行时才确定具体的类,

鱼干的博客 4243

软考高级-系统架构设计师 论文范文参考(一)

系统架构设计师 论文参考

片言可决讼,半纸能缚龙 4341

C++ 继承 多态 组合 从运用到底层原理详解!草履虫也能轻松看懂

本文详细讲解了C++面向对象编程中的继承、多态和组合三大核心概念。继承部分介绍了基本语法、访问权限、构造析构顺序等;多态部分阐述了虚函数机制、纯虚函数、对象切片等;组合部分则分析了强组合和弱组合的实现方式。文章还对比了组合与继承的优缺点,强调"优先使用组合"的设计原则。

我的博客主要是用来给我自己复习的,主要是上传一些知识点,小型的项目和功能模块,如果有什么问题或错误麻烦联系我! 3038

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Java中多态(方法的重写)是如何实现的

本文参考《深入理解Java虚拟机第三版》8.3章节 首先我们来看下面这段代码: public class Test1 { public static void main(String[] args) { People p1=new Man(); People p2=new Woman(); p1.say(); p2.say(); } } class People{ void say(){ System.o

zxc412728的博客 526

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

java基础-继承和多态

继承和多态继承继承的概念类的继承格式继承的特性关键字extends关键字implements关键字super 与 this 关键字final关键字构造器多态多态的实现方式 继承 继承的概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。 类的继承格式 class 父类 { } class 子类 extends 父类 { } 继承的特性 子类拥有父

QAQ_0v0的博客 181

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

JAVA基础-11-封装 继承 多态--九五小庞

1.封装 在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。 要访问该类的代码和数据,必须通过严格的接口控制。 封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。 适当的封装可以让程式码更容易理解与维护,也加...

qq_37241964的博客 59

【JAVA SE】第七章 继承和多态

【JAVA SE】第七章 继承和多态

2022年毕业的萌新程序猿,输出一下自己的学习内容~ 462

《Java核心技术》第10版读书笔记之Chap5(1)——类的继承

本文是阅读《Java核心技术第10版》后的读书笔记,主要介绍Java中类继承的相关内容,包括extends关键字、super关键字及其与this的比较、函数重载与函数覆写的概念以及比较。

LPWSTR的博客 1853

java多态

Java 中其实没有虚函数的概念,它的普通函数就相当于 C++ 的虚函数,动态绑定是Java的默认行为。当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;我们将介绍在 Java 中,当设计类时,被重写的方法的行为怎样影响多态性。当子类对象调用重写的方法时,调用的是子类的方法,而不是父类中被重写的方法。多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。我们已经讨论了方法的重写,也就是子类能够重写父类的方法。同一个事件发生在不同的对象上会产生不同的结果。

JYR8758的博客 411

面试官问:Java三大特性是什么?一张图+咖啡店故事+JVM底层,彻底拿下这道必考题(附图解+比喻+避坑指南)

摘要:封装、继承、多态的含义+咖啡店比喻+重载vs重写对比+多态底层虚方法表+JVM栈上分配+常见坑+可运行代码。一句话:封装藏细节,继承复代码,多态一接口多实现。

折哥|智能物流与Java实战,副高数据库工程师。深耕出版社物流WMS/OMS(线体/立库/VGA),也分享Java进阶与OMS电商对接。Oracle→PG实战派。相信沉淀可迁移能力,分享通用技术,不藏不虚。 6260

python中的继承与多态_Python 简明教程 --- 21,Python 继承与多态

程序不是年轻的专利,但是,它属于年轻。目录我们已经知道封装,继承和多态 是面向对象的三大特征,面向对象语言都会提供这些机制。1,封装在这一节介绍类的私有属性和方法的时候,我们已经讲到过封装。封装就是在设计一个类的时候,只允许使用者访问他需要的方法,将复杂的,没有必要让使用者知道的方法隐藏起来。这样,使用者只需关注他需要的东西,为其屏蔽了复杂性。私有性就是实现封装的一种手段,这样,类的设计者就可以控...

weixin_42099755的博客 257

Java 多态

多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作,如图所示:多态性是对象多种表现形式的体现。同一个事件发生在不同的对象上会产生不同的结果。

hyc2005的博客 391

Python 简明教程 --- 21,Python 继承与多态

微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 程序不是年轻的专利,但是,它属于年轻。 目录 我们已经知道封装,继承和多态 是面向对象的三大特征,面向对象语言都会提供这些机制。 1,封装 在这一节介绍类的私有属性和方法的时候,我们已经讲到过封装。 封装就是在设计一个类的时候,只允许使用者访问他需要的方法,将复杂的,没有必要让使用者知道的方法隐藏起来。这样,使用者只需关注他需要的东西,为其屏蔽了复杂性。 私有性就是实现封装的一种手段,这样,类的设计者.

@码农充电站的专栏 727

Java进阶(3):多态性

Java安装参考: https://blog.youkuaiyun.com/Zachcc/article/details/94646514 Java进阶(2): https://blog.youkuaiyun.com/Zachcc/article/details/95667795 Java 多态 多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作 多态性是...

Zachcc的博客 250

python继承和多态_Python 简明教程 --- 21,Python 继承与多态

程序不是年轻的专利,但是,它属于年轻。目录我们已经知道封装,继承和多态 是面向对象的三大特征,面向对象语言都会提供这些机制。1,封装在这一节介绍类的私有属性和方法的时候,我们已经讲到过封装。封装就是在设计一个类的时候,只允许使用者访问他需要的方法,将复杂的,没有必要让使用者知道的方法隐藏起来。这样,使用者只需关注他需要的东西,为其屏蔽了复杂性。私有性就是实现封装的一种手段,这样,类的设计者就可以控...

weixin_39559277的博客 111
上一篇: 【从C++到Java一周速成】章节9:构造器
下一篇: 【从C++到Java一周速成】章节11:异常的处理
云沧同学
博客等级 码龄4年 577粉丝 41原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值