Java的三大特性(基本特征)

news/2024/7/10 23:26:50 标签: jquery, js, java

面向对象的三个基本特征是:封装、继承、多态

img

封装

封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。

封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

在Java中类中成员的属性有:public, protected, (default), private,这四个属性的访问权限依次降低。

继承

面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。

通过继承创建的新类称为“子类”或“派生类”。

被继承的类称为“基类”、“父类”或“超类”。

继承的过程,就是从一般到特殊的过程。

要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。

在某些 OOP 语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。

继承概念的实现方式有三类:实现继承、接口继承和可视继承。

  1. 实现继承是指使用基类的属性和方法而无需额外编码的能力。
  2. 接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力。
  3. 可视继承是指子窗体(类)使用基窗体(类)的外观和实现代码的能力。

在考虑使用继承时,有一点需要注意,那就是两个类之间的关系应该是“属于”关系。例如,Employee 是一个人,Manager 也是一个人,因此这两个类都可以继承 Person 类。但是 Leg 类却不能继承 Person 类。

抽象类仅定义将由子类创建的一般属性和方法,创建抽象类时,请使用关键字 Interface 而不是 Class。

OO开发范式大致为:划分对象→抽象类→将类组织成为层次化结构(继承和合成) →用类与实例进行设计和实现几个阶段。

多态

多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。

实现多态,有二种方式,覆盖,重载。

覆盖,是指子类重新定义父类的虚函数的做法。

重载,是指允许存在多个同名函数,而这些函数的参数表不同。

其实,重载的概念并不属于“面向对象编程”,重载的实现是:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数。
如,有两个同名函数:function func(p:integer):integer;和function func(p:string):integer;。那么编译器做过修饰后的函数名称可能是这样的:int_func、str_func。对于这两个函数的调用,在编译器间就已经确定了,是静态的。也就是说,它们的地址在编译期就绑定了,因此,重载和多态无关。真正和多态相关的是“覆盖”。当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的。因此,这样的函数地址是在运行期绑定的。结论就是:重载只是一种语言特性,与多态无关,与面向对象也无关。

我们知道,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用。多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用。


http://www.niftyadmin.cn/n/1854874.html

相关文章

Database First开发方式

Database First又称数据库优先,在对旧的项目进行升级时使用。 增删改查 (1).查询 string text textBox1.Text; if (text "") 注:判断文本框是否为空 { dataGridView1.DataSource xcdy.NewsType.Select(n > new { n.TypeID, n.TypeName, n.IsSingle…

实现单例模式的几种方式

单例模式的几种实现方式 单例模式的实现有多种方式,如下所示: 1、懒汉式,线程不安全 是否 Lazy 初始化:是 是否多线程安全:否 实现难度:易 描述:这种方式是最基本的实现方式,这…

python三维可视化:配置tvtk

Windows10 64位 Python3.6,在库文件所在目录里依次安装: VTK-7.1.1-cp36-cp36m-win_amd64.whlnumpy-1.12.1mkl-cp36-cp36m-win_amd64.whltraits-4.6.0-cp36-cp36m-win_amd64.whlmayavi-4.5.0vtk71-cp36-cp36m-win_amd64.whlPyQt4-4.11.4-cp36-cp36m-win…

String、StringBuffer和StringBuilder类区别分析

Java提供了String、StringBuffer和StringBuilder类来封装字符串,并提供了一系列操作字符串对象的方法。 它们的相同点是都用来封装字符串;都实现了CharSequence接口。它们之间的区别如下: 一、可变与不可变 String类是一个不可变类&#x…

八:The YARN Timeline Server

一、Overview 介绍yarn timeline server用于存储和检查应用程序过去和现在的信息(比如job history server)。有两个功能:1.Persisting Application Specific Information 保存应用程序特定的信息收集和检索应用程序或者框架的特定信息。如装mr任务的map\reduce数量通…

IDEA lombok插件的安装(快速安装)和常用注解介绍

首先添加maven依赖 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.8</version><scope>provided</scope> </dependency>开始安装插件 1、CtrlAltS打开设置选项…

转 Pycharm及python安装详细教程

转 &#xff1a; http://blog.csdn.net/qq_29883591/article/details/52664478 首先我们来安装Python 1、首先进入网站下载&#xff1a;点击打开链接&#xff08;或自己输入网址https://www.python.org/downloads/&#xff09;&#xff0c;进入之后如下图&#xff0c;选择图中红…

屏幕坏点检测图片_如何分辨智能电视屏幕的好坏?掌握这三招,自己也能轻松检测...

大家都知道一句话:“买电视就是买屏”虽然这句话有些片面了,不是很正确,但是也从侧面验证了电视屏幕的重要性。然而在选购了新的电视机后,我们该如何保证拿到手的这台电视屏幕质量是过关的呢?没有专业测试工具的用户又该如何对电视进行屏幕测试呢?今天小编就和大家来分享一下…