面向对象的三个基本特征(面向对象的三大基本特征和五大基本原则)

/ 0评 / 0

面向对象的三个基本特征(面向对象的三个基本特征和五个基本原则)

面向对象的三个基本特征

封装(封装)

封装是指将客观事物封装到抽象类中,类只能通过可信的类或对象来操作自己的数据和方法,隐藏不可信的信息。封装是面向对象的特征之一,也是对象和类概念的重要特征。简而言之,类是封装数据和对其进行操作的代码的逻辑实体。在一个对象中,一些代码或数据可能是私有的,不能被外部世界访问。这样,对象为内部数据提供了不同级别的覆盖,以防止程序中不相关的部分意外更改或不适当地应用对象的私有部分。

继承(继承)

继承是指能够应用现有类的所有功能并扩展这些功能而无需重写原始类的天赋。继承创建的新类称为子类或派生类,继承的类称为基类、父类或超类。传承的过程就是从一般到特殊的过程。继承的概念有两种实现方式:实现继承和接口继承。实现继承是指无需额外编码就能直接应用基类的属性和方法的能力;接口继承指的是只应用属性和方法名称的人才技术资源网络,但子类必须提供实现。

多态性

多态是指类实例的相似性方法在不同的情况下有不同的表示情况。多态机制使得具有不同内部结构的对象能够共享同一个外部接口。这意味着,尽管不同对象的特定操作不同,但它们(那些操作)可以通过一个公共类由同一个方法调用。9 >面向对象的三个基本特征和五个基本原则。最常见的多态性是将子类传递给父参数。在运行时调用父方法时,特定的内部结构或动作由传递的子类决定。

面向对象的五个基本原则

单一责任原则

它的核心思想是:一个类,最好只做一件事,而只有一件事引起它的变化。单一责任原则可以看作是面向对象原则中低耦合、高内聚的延伸。责任被定义为变革的原因,而变革的原因是通过提高凝聚力而减少的。过多的责任可能会导致其变化的原因更多,从而导致责任的依赖和相互影响,从而极大地破坏其凝聚力和耦合性。一般来说,单一责任意味着只有一个单一的功能,不要为类实现太多的功能点,以确保实体只有一个原因导致其变化。专注是一个人优秀的品格;同样,单一也是一个班级的优秀设计。杂七杂八的职责会让代码看起来特别别扭,影响全身,失去美感,导致系统问题难看的风险。

开-闭原理

它的核心思想是软件实体应该是可扩展的,但不可修改的。也就是扩大对外开放,修正封锁。

公开封锁的原则在两个方面很重要:

1.向扩展开放意味着当有新的需求或变化时,现有的代码可以扩展以适应新的情况。

2.阻止修订意味着一旦设计好了类,它就可以独立完成工作,而无需尝试修订。实现开放封锁原则的核心思想是对抽象而不是具体进行编程,因为抽象相对稳定。让类依附于固定抽象,这样修正就受阻了;通过面向对象的继承和多态机制,可以实现面向对象的三个基本特征和五个基本原则。面向对象和面向过程的抽象的稳定性决定了系统的稳定性,因为抽象是不可改变的,对抽象的依附是面向对象设计的本质,也是依附反转原理的核心。依附于抽象是一个普遍的原则,而有时候依附于细节是不可避免的。要权衡抽象和具体的取舍,方法不一样。附加到抽象意味着编程接口,而不是实现。

界面分离原理

它的核心思想是应用多个小的专用接口,而不是一个大的通用接口。具体来说,接口隔离的原则体现在:接口要有内聚性,避免“胖”接口。一个类对另一个类的附件应该基于最小的接口,不强制使用附件是一种接口污染。接口有效地将细节与抽象分开,这体现了抽象编程的所有好处。接口隔离强调接口的单一性。然而,fat接口有明显的缺点,这将导致实现类型必须完全实现接口的所有方法和属性。有时候实现类型并不需要所有的接口定义,这在设计上是“浪费”的,会给实现带来潜在的问题。fat接口的修改会导致一系列客户端程序被修改,有时候简直就是灾难。在这种情况下,fat接口被分解成许多具有特殊功能的定制方法,这样客户端只附加到它们实际调用的方法上,从而减轻了客户端附加到它们不使用的方法上的负担。

手腕的重要性有两种:

1.分别委托,通过增加一个新的类型来委托客户的需求,来隔离客户和接口的直接依赖,但是会增加系统开销。

2.分别多重继承,是通过接口的多重继承来实现客户需求的较好方法。以上就是面向对象设计的五个基本原则。它们就像面向对象编程中的黄金法则。遵循它们可以使我们的代码更加生动、易于重用、易于扩展、智能和优雅。不同的设计模式对应着不同的需求,而设计原则则代表着永恒的灵魂,在实践中应始终遵循。正如阿瑟·J·瑞尔(ARTHUR J.RIEL)在那边的《OOD灵感》中所说:“你不必严格遵循这些原则,你也不会因为违反这些原则而受到惩罚。但是你应该把这些原则当作警钟。如果你违反了其中一条,警报就会响起。”封装,继承,Java中多态0,Integer -> null。

类、成员变量和局部变量

Java中有三种变量,分别是类变量、成员变量和局部变量。它们是分开的,并在JVM中注册。

方法区、堆内存和堆栈内存。

在上面定义的三个变量中,变量A是类变量,变量B是成员变量,变量C和D是局部变量。

Java封装的封装、继承和多态什么是平台无关性?

什么是平台独立性?

如何实现Java的平台无关性

信任对于很多Java开发人员来说,刚接触到Java语言的时候,就听说Java是跨平台语言,Java是平台无关的,这也是Java语言能够快速涌现、风光无限的主要原因之一。那么,平台独立性到底是什么?Java是如何实现平台独立性的?本文将简单介绍一下。

什么是平台独立性?

平台无关性是指一种语言在没有平台约束的计算机上运行,一次编译,处处执行(Write Once,Run Anywhere)。也就是说,由Java创建的可执行二进制程序可以在多个平台上运行,无需更改。

独立于平台的优势

作为一种独立于平台的语言,它在自身开发和与开发人员的友谊方面都很突出。由于其平台独立性,Java程序可以在各种设备上运行,尤其是一些嵌入式设备,如打印机、扫描仪、传真机等。随着5G时代的到来,会有更多的终端接入网络,而信任平台独立性的Java也可以做出一些贡献。对于Java开发人员来说,Java减少了开发和安排到多个平台的成本和时间。真的编译一次,到处跑。

平台独立性的实现

与平台无关的对Java的支持,就像对安全性和网络移动性的支持一样,分散在所有的Java系统结构中。其中,Java语言规范、类文件、Java虚拟机(JVM)等起着主要作用。

汇编的基本原则

说到Java语言规范、Class文件和Java虚拟机,就不得不提到Java是如何工作的。我们在Java代码的编译反编译中介绍过,在计算机的世界里,计算机只知道0和1,所以计算机真正执行的其实是由0和1组成的二进制文件。但是C,C++,Java,Python等。,我们日常开发和应用的,都属于高级语言,不是二进制语言。因此,为了让计算机知道我们编写的Java代码,有必要将其“翻译”成由0和1组成的二进制文件。这个过程叫做编译。负责处理这个过程的工具叫做编译器。在对Java编译原理的深刻分析中,我们介绍了在Java平台中,如果要将Java文件编译成二进制文件,需要经过编译的两个步骤,前端编译和后端编译:

前端编译的重要性是指与源语言相关但与目标机器无关的部分。在Java中,众所周知的javac编译是前端编译。除此之外,我们还应用了很多IDEs,比如eclipse、idea等。,所有这些都有内置的前端编译器。主要技术资源网络的主要功能是转换。java代码。类别代码。那个。这里提到的类代码实际上是一个类文件。后端编译的重要性在于将中间代码翻译成机器语言。而且,这一步是Java虚拟机履行义务的关键。

25 >什么是平台独立性?

因此,我们说Java平台独立性的实现在上述阶段起着重要的作用。如下图所示:

让我们从后往前介绍这三个主角:Java虚拟机、Class文件和Java语言规范。

java虚拟机

所谓平台独立,就是能够在多个平台上无缝连接。但是,不同平台的硬件和操作系统是不同的。对于不同的硬件和操作系统,最重要的区别是指令不同。例如,要执行a+b,A操作系统对应的二进制指令可以是10001000,而B操作系统对应的指令可以是11101110。然后,为了跨平台,最重要的是根据相应的硬件和操作系统生成相应的二进制指令。这项工作是由我们的Java虚拟机完成的。虽然Java语言是平台无关的,但是JVM是平台相关的。不同的操作系统需要安装相应的JVM。

什么是平台独立,什么是平台独立?

字节代码

不同平台的虚拟机都应用统一的程序存储模式——字节码是平台独立性的另一个基石。Java虚拟机只与字节码组成的类文件交互。我们说Java语言可以一次写,随处运行。这里的写实际上是指生成类文件的过程。因为Java Class文件可以在任何平台上创建,也可以由任何平台上的Java虚拟机加载和执行,所以有Java的平台独立性。

Java语言规范

有了统一的Class文件和一个可以在不同平台上将Class文件翻译成相应二进制文件的Java虚拟机,Java能完全实现跨平台吗?其实不是。Java语言在跨平台方面做了一些努力。这些工作在Java语言规范中定义。

例如,Java中基本数据类型的值和动作是由它们自己定义的。在C/C++中,基础数据类型由其占用宽度决定,占用宽度由平台决定。因此,在不同的平台上,对于同一个C++程序的编译结果会出现不同的动作。举个简单的例子,对于int类型,在Java中,int占用4个字节,这是固定的。但是它在C++中并不固定。在16位计算机上,int类型的长度可以是两个字节;在32位计算机上,它可能是4字节;当64位计算机流行时,int类型的长度可能达到8字节。(这里一切皆有可能!)

通过确保所有平台上基本数据类型的一致性,Java语言为平台独立性提供了强有力的支持。

总结

对Java的独立于平台的支持分散在所有的Java系统结构中。其中,Java语言规范、类文件、Java虚拟机等起着重要的作用。

什么是平台独立,什么是平台独立?

实际上,Java虚拟机已经可以支持除Java之外的很多语言,比如Kotlin、Groovy、JRuby、Jython、Scala等等。它之所以能被支持,是因为这些语言也能被编译成文字代码。而《兵官心》的代码是用哪个中文编译的?经常应用IDE的开发人员可能会发现,当我们想要在IntelijIDEA中用鼠标右键创建Java类时,IDE会提醒我们创建其他类型的文件,这些文件是IDE默认支持的一些语言,可以在JVM上运行,没有提醒的可以通过插件来支持。

目前有很多语言可以直接在JVM上运行。今天介绍其中的九个。每种语言都用一段“HelloWorld”代码来演示,看看不同语言的语法有什么不同。

科特林

Kotlin是运行在Java虚拟机上的静态类型编程语言,也可以编译成JavaScript源代码。Kotlin最初是为了产生高性能的请求程序而设计的,所以在运行上不如Java。Kotlin可以作为开发工具JetBrains InteilliJ Idea的插件来应用。

你好,科特林的世界

什么是平台独立,什么是平台独立?

Jruby

JRuby用于桥接Java和Ruby。它使用比Groovy更短的语法来编写代码,可以让每一行代码履行更多的义务。就像Ruby一样,JRuby提供的不仅仅是高级语法模式。它还提供纯面向对象的实现、闭包等等。与Ruby本身相比,JRuby有很多可以调用的基于Java的类库。虽然Ruby也有很多类库,但是在数量和通用性上都无法和Java标准类库相比。

你好世界

Jython

Jyn是一个用Java语言编写的Jython解释器。Jython可以使用Python语言高效生成动态编译的Java字节码。

你好

Jython的世界

幽灵

Fantom是一种通用的面向对象编程语言,由Brian和Andy Frank创建,运行在Java Runtime Environment、JavaScript和。NET公共语言运行库。它的重要设计目的是提供规模库API来抽象代码最终将在JRE还是CLR上运行的问题。Fantom是与Groovy和JRuby相同的编程语言,但遗憾的是Fantom不能应用Java代替库,而是自己的扩展类库。

什么是平台独立,什么是平台独立?

你好世界